C# 更改Form1.Form2.Disposed事件上的复选框状态
几个小时以来,我一直在寻找解决这个问题的办法。所以你们这些善良的人是我最后的选择 这是我到目前为止所做的C# 更改Form1.Form2.Disposed事件上的复选框状态,c#,windows-forms-designer,C#,Windows Forms Designer,几个小时以来,我一直在寻找解决这个问题的办法。所以你们这些善良的人是我最后的选择 这是我到目前为止所做的 这是Form2.cs public partial class Form2 : Form { Form1 newForm1; public Form2() { InitializeComponent(); } private void Form2_Disposed(object sender, EventArgs e)
这是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事件,但不会更改复选框状态
我还尝试将Form1.Checkbox1控件公开,并直接访问它(我的意思是不使用访问器,但仍然没有成功)
我怀疑新表格1是表格1的副本。
但我不知道如何判断“newForm1”就是“Form1”对象
任何帮助都将不胜感激。如果Form1已经打开,您可以这样做:(而不是使用Dispose使用closed event)
public partial class Form1 : Form
{
public static Form1Instance;
...
Form1.OnLoad(...)
{
Form1Instance=this;
}
}
//now call using static variable
Form1.Form1Instance.CheckBox1_Checked=true;
表格1.cs
表格2.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;
}
}
你最好用Form2.OnClose()来称呼它,而不是Form2.Dispose();谢谢@David从今以后你是我的上帝。今晚我将为你献上一杯啤酒:Dform1已经开放了?是的@irsog form1已经开放了
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;
}
}