我在这里以及与此有关的其他一些站点上四处张望,并找到了答案。但是,该解决方案不起作用或太晦涩难懂,以至于我无法理解。当我说它“不会起作用”时,我将解释我的意思。
我尝试过两种方法。第一个使用get
和set
,第二个简单地将control修饰符设置为true。
使用其中任何一个时,似乎Form1
Designer中的值都不会更新,因此Form2
只能将其读取为false,因为默认情况下该值为复选框的值。
在Form1
:
public bool CheckBox
{
get { return this.checkBox1.Checked; }
//set { this.checkBox1.Checked = value; }
}
private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.ShowDialog();
}
在Form2
:
private void button1_Click(object sender, EventArgs e)
{
Form1 frm = new Form1();
if (frm.CheckBox == true)
{
//Do whatever
}
}
这基本上就是我想要做的。如果我做错了什么,或者有更好的方法来做,请告诉我。
谢谢你。
您正在中创建一个新Form
实例,Form2
它与当前Form1
实例完全不同。
相反,您可以将当前的Form1实例传递给这样的ShowDialog
方法:
frm.ShowDialog(this);
通过执行此操作,您可以将实例的Owner属性设置Form2
为Form1
实例。因此,您可以使用中的Owner
属性访问当前实例Form2
。另外,您应该将其强制转换Form1
为访问CheckBox
属性。
private void button1_Click(object sender, EventArgs e)
{
if (((Form1)Owner).CheckBox == true)
{
//Do whatever
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句