0

Form1とForm2の2つのフォームがあります.Form1にはボタン(btnNew)があり、クリックするとForm2が開き、無効になっています.Form2が閉じている場合にのみ、ボタンを再度有効にする必要があります.ユーザーはForm1も同時に使用する必要があります.このコードボタンを再度有効にしていません。どこに行方不明ですか。

Form1 の場合:

private void btnNew_Click_1(object sender, EventArgs e)
  {   
    Form2 f2 = new Form2();
    f2.Show();
    btnNew.Enabled = false;
  }   
public void EnableButton()
 {
    btnNew.Enabled = true;
 }

Form2 の場合:

private void Form2_FormClosing(object sender, FormClosingEventArgs e)
  {
    Form1 f1 = new Form1();
    f1.EnableButton();
  }
4

2 に答える 2

1

コードを作成すると、アプリケーションで既に実行されているものとは異なる新しい Form1 が作成されます。

Form2 に Form1 への参照を追加して、そのコントロールを操作することができます。

form2 に次のようなプロパティを指定します。

public Form ParentForm {get; set;}

そして、ボタンクリックで form1 を割り当てます:

Form2 f2 = new Form2()
f2.ParentForm = this;
f2.show();

次に、締めくくりに次のようなことができるはずです。

this.ParentForm.EnableButton();
于 2013-04-08T05:35:57.383 に答える
0

Form2クロージング イベントをインスタンス化するクラス内からサブスクライブします( Form1)。

private void btnNew_Click_1(object sender, EventArgs e)
  {   
    Form2 f2 = new Form2();
    f2.Closing += f2_Closing;
    f2.Show();
    btnNew.Enabled = false;

  }   

public void f2_Closing(object sender, FormClosingEventArgs e)
{
   this.EnableButton();
}

public void EnableButton()
 {
    btnNew.Enabled = true;
 }
于 2013-04-08T05:41:38.127 に答える