2016-05-04 13 views
0

私は2つのフォームを持っています。フォーム1では、panel1というパネルを作成しました。私の質問は、別のフォームにコントロールを渡し、他のフォームからコントロールを追加することが可能な場合です。ここに私の現在のコードは次のようになります。パネルコントロールにAcessを渡す

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    public Control AccessPanel 
    { 
     get { return panel1; } 
     set { panel1.Controls.Add(value); } 
    } 
} 

のForm2:

public partial class Form2 : Form 
{ 
    public Form2() 
    { 
     InitializeComponent(); 
     MainForm = this.MainForm; 
    } 

    private void Form2_Load(object sender, EventArgs e) 
    { 
     this.MainForm.AccessPanel1.Controls.Add(/*Some Control*/) 
    } 
} 

私は正しい方向にポイントを本当にいただければ幸いです。

ありがとうございます!

+0

現在のコードにはどのような問題がありますか? (別に、 'MainForm = this.MainForm;'のような奇妙なものがあります。これは絶対に何もしません。ゲッターとセッターは同じものを取得して設定しません) –

+0

コードは私のpanel1と私は、方法を考え出す助けが必要です。私はWinformsには非常に新しいので、コントロールを操作する方法については混乱しています。 –

答えて

0

Form1がメインフォームで、Form2という別のフォームがメインフォーム(おそらくダイアログ)から開いているとします。また、Form2が最初のフォームのパネルにコントロールを追加したいと仮定します。その後、Form2には最初のフォームへの参照が必要です。コンストラクタで1つを渡すことができます。

public partial class Form2 : Form 
{       
    private Form1 _form1; 

    public Form2(Form1 form1) 
    { 
     _form1 = form1; 
     InitializeComponent(); 
    } 

    private void Form2_Load(object sender, EventArgs e) 
    { 
     _form1.AddControl(/*Some Control*/); 
    } 
} 

私はパネル自体を公開しません。 Form2は、できるだけ少ないことを知っている必要があります。Form1。これにより、フォーム間の依存性が少なくなります。

var form2 = new Form2(this); // Pass Form1 through the constructor. 
form2.Show(this); // Here `this` is the owner. 
        // It ensures that Form2 always stays on top of Form1. 

するか、ShowDialogを使用します。

Form1では、私はあなたがこのようなForm2を開くことができForm1では、この方法に

public void AddControl(Control control) 
{ 
    panel1.Controls.Add(control); 
} 

を追加します。

関連する問題