我浏览过这里和其他一些与此相关的网站,并找到了答案。然而,要么该解决方案不起作用,要么对我来说太晦涩难懂。当我说“不起作用”时,我会解释一下我的意思。
我尝试过两种方法来做到这一点。第一个使用 get
和 set
,第二个只需将 control 修饰符设置为 true。
当使用其中任何一个时,Form1
设计器中的值似乎不会更新,因此 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
}
}
这基本上就是我想做的事情。如果我做错了什么,或者有更好的方法,请告诉我。
谢谢。
最佳答案
您正在 Form2
中创建一个新的 Form
实例。它与当前的 Form1
实例完全不同。
相反,您可以将当前的 Form1 实例传递给 ShowDialog
方法,如下所示:
frm.ShowDialog(this);
通过这样做,您将设置 Owner将 Form2
的属性添加到您的 Form1
实例。因此,您可以使用 Form2
中的 Owner
属性访问当前实例。此外,您还应该将其转换为 Form1
以访问 CheckBox
属性。
private void button1_Click(object sender, EventArgs e)
{
if (((Form1)Owner).CheckBox == true)
{
//Do whatever
}
}
关于c# - 从 Form2 中获取 Form1 的复选框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21616808/