2012-01-25 5 views
1

フォームにユーザーコントロールを動的に読み込む必要があります。私は、メニュー項目を選択するときに、メニューとユーザーコントロールの名前を渡しています。コントロールフォルダからユーザーコントロールを取得

private void MenuItemClickHandler(object sender, EventArgs e) 
     { 
      ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender; 
      MessageBox.Show(clickedItem.Name); 
     } 

このイベントでどのようにユーザーコントロールを読み込むことができますか?このような場合のAsp.Netでは、私はLoadControl( "path/name.ascx")を使用しました。私はwinformsでアナログが見つかりませんでした。

答えて

2

を設定する必要があり、そしてコントロールは、すでにあなたのアプリケーションにコンパイルされていますActivator.CreateInstanceを使用して、型名からコントロールのインスタンスを作成できます。コントロールのインスタンスを作成したら、フォームに追加することができます。以下のコードのような何か動作するはずです:

private void MenuItemClickHandler(object sender, EventArgs e) 
{ 
    ToolStripMenuItem clickedItem = (ToolStripMenuItem)sender; 
    var t = Type.GetType("MyNamespace." + clickedItem.Name)); 
    var control = (UserControl)Activator.CreateInstance(t); 
    this.Controls.Add(control);  
} 
0

これは簡単なはずです。

this.Controls.Add(clickedItem) 

しかし、この前

は、あなたがコントロールの名前を持っている場合(形でそれが表示されますすなわち)clickedItemの場所

0

あなたはあなたのアプリケーションで使用するフォームまたはパネルのControls.Add()メソッドを使用していずれかの現在のフォームにインスタンスを追加することができます。

public partial class UseUserControl : Form 
    { 
     public UseUserControl() 
     { 
      InitializeComponent(); 
      //Create the user control. 
      TempUserControl userControl = new TempUserControl(); 
      //Add the location to the control. 
      userControl.Location = new Point(40, 40); 
      //Add the control to the current form. 
      this.Controls.Add(userControl); 
     } 
    } 
関連する問題