2013-03-17 34 views
0

我一直在尋找這個特定問題的解決方案几個小時。所以,你種的#1人是我的最後一招在Form2.Disposed事件中更改Form1.Checkbox狀態

這裏是我到目前爲止已經完成


這是Form2.cs

public partial class Form2 : Form 
{ 
    Form1 newForm1; 

    public Form2() 
    { 
     InitializeComponent(); 

    } 
    private void Form2_Disposed(object sender, EventArgs e) 
    { 
     newForm1 = new Form1(); 
     newForm1.CheckBox1_Checked = false; 
    } 

這是窗體2 .Designer.cs

partial class Form2 
{ 
    .... 
private void InitializeComponent() 
    { 
     .... 
     this.Disposed += new System.EventHandler(this.Form2_Disposed); 
     .... 
    } 
    .... 
} 

這是在Form1.cs

public partial class Form1 : Form 
{ 
    .... 
    public bool CheckBox1_Checked 
    { 
     get { return checkBox1.Checked; } 
     set { checkBox1.Checked = value; } 
    } 
    .... 
} 

所以,當我關閉窗體2(與X)的程序經過Disposed事件,但不會改變該複選框的狀態。

我也試圖讓Form1.Checkbox1控制公共和直接訪問它(我的意思是不使用訪問器,但仍沒有運氣。

我懷疑newForm1是在Form1的副本。 但我不知道該怎麼告訴「newForm1」是非常「Form1的」對象

任何幫助,將不勝感激

+0

Form1中已經打開? – KF2 2013-03-17 14:36:24

+0

是@irsog form1已經打開 – Iorgov 2013-03-17 15:29:28

回答

0

如果Form1中已經打開,你可以這樣做:(而不是使用Dispose使用關閉事件) Form1.cs的

public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
      _Form1 = this; 
     } 
     public static Form1 _Form1; 

     public CheckBox chk { get { return checkBox1; } } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      Form2 gg = new Form2(); 
      gg.ShowDialog(); 
     } 

    } 

Form2.cs

public partial class Form2 : Form 
    { 

     public Form2() 
     { 
      InitializeComponent(); 
      this.FormClosed += new FormClosedEventHandler(Form2_FormClosed); 
     } 

     void Form2_FormClosed(object sender, FormClosedEventArgs e) 
     { 
      Form1._Form1.chk.Checked = false; 
     } 

    } 
0
public partial class Form1 : Form 
{ 
    public static Form1Instance; 
    ... 

    Form1.OnLoad(...) 
    { 
     Form1Instance=this; 
    } 
} 

//now call using static variable 
Form1.Form1Instance.CheckBox1_Checked=true; 
+0

你最好在Form2.OnClose()中調用它,而不是Form2.Dispose(); – David 2013-03-17 14:33:40

+0

感謝@David從現在開始,你是我個人的上帝。 今晚我要爲你的榮譽犧牲一杯啤酒:D – Iorgov 2013-03-17 15:27:57