我一直在寻找这个特定问题的解决方案。所以你好Stackoverflow的人是我的最后一招
这是我到目前为止所做的事情
这是在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;
}
这是在Form2.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; }
}
....
}
因此,当我关闭Form2(带有X)时,程序会通过Disposed事件,但不会更改Checkbox状态。
我也尝试将Form1.Checkbox1控件公开并直接访问它(我的意思是不使用访问器,但仍然没有运气。
我怀疑newForm1是Form1的副本。 但我不知道如何判断“newForm1”是非常“Form1”对象
任何帮助都将不胜感激。
答案 0 :(得分:0)
public partial class Form1 : Form
{
public static Form1Instance;
...
Form1.OnLoad(...)
{
Form1Instance=this;
}
}
//now call using static variable
Form1.Form1Instance.CheckBox1_Checked=true;
答案 1 :(得分: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;
}
}