2016-11-16 9 views
0

私は2つのフォームを持っています。 Form1にはラベルがあり、Form2にはボタンがあります。 Form2をコントロールとしてForm1に追加しています。ボタンをクリックすると、ラベルが更新されます。 Form1の静的関数から非静的フィールドにアクセス

コード:Form2のため

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

    private void RunTest() 
    { 
     Form myForm2 = new Form2(); 
     myForm2.TopLevel = false; 
     this.Controls.Add(myForm2); 
     myForm2.Show(); 
    } 

    public static void UpdateLabel() 
    { 
     label1.Text = "Button Pressed"; //ERROR 
    } 
} 

コード:UpdateLabelを(呼び出し

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

    private void button1_Click(object sender, EventArgs e) 
    { 
     Form1.UpdateLabel(); 
    } 
} 

)は、それが静的であることを必要とするが、その後私は

ます。Label1.Textを更新することはできません

このような状況で何をすべきか提案はありますか?私はこれを動作させるときに、Form1に多くのForm2を追加したいと思います。

答えて

0

Form2タイプForm1のプロパティを追加し、thisForm1から割り当てます。

private void RunTest() 
{ 
    Form myForm2 = new Form2(); 
    myForm2.otherform = this;    // <--- note this line 
    myForm2.TopLevel = false; 
    this.Controls.Add(myForm2);   // TODO: why is this line here? 
    myForm2.Show(); 
} 

することはでき、その後

private void button1_Click(object sender, EventArgs e) 
{ 
    otherform.UpdateLabel(); 
} 

あなたが作る場合UpdateLabel()非静的

public void UpdateLabel() 
{ 
    label1.Text = "Button Pressed"; 
} 
関連する問題