Top / .NET備忘録 / 05.UserControl / 03.HelperForm クラス

まずは、コントロールを貼り付けて OcxState プロパティに代入する部分を作成します。

Form オブジェクトを継承し、コンストラクタの引数に、UserControl の Type と、AxHost.State をとるクラスを作成します。

コンストラクタ中では、Reflection を使ってインスタンスを作成し、InitializeComponent() でやっていることそのままを実行します。

System.ComponentModel.ISupportInitialize にキャストして BeginInit() と EndInit() を実行しているのは、UserControl が同名のメソッドを持っていたときの配慮なのかなーという気がしますので、それに習います。

実際は、BeginInit() では何もやっていません。EndInit() で UserControl のインスタンスを作成しているようです。

 using System;
 using System.Reflection;
 using System.Windows.Forms;
 using System.ComponentModel;
 
 namespace GetOcxState
 {
     class HelperForm : Form
     {
         private AxHost m_Ocx;
         public HelperForm(Type ocxType, AxHost.State ocxState)
         {
             this.SuspendLayout();
 
             this.m_Ocx = (AxHost)Activator.CreateInstance(ocxType);
 
             ((ISupportInitialize)m_Ocx).BeginInit();
             m_Ocx.OcxState = ocxState;
             this.Controls.Add(m_Ocx);
             ((ISupportInitialize)m_Ocx).EndInit();
 
             this.ResumeLayout(false);
             this.PerformLayout();
         }
 
         public object GetPropertyValue(PropertyInfo info)
         {
             return info.GetValue(m_Ocx, null);
         }
     }
 }



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2013-03-10 (日) 01:32:56 (1621d)