我正在使用WinForms。我有2个表单,表单1和表单2.在表单2中,我有多个复选框。如何检查form2中的任何复选框是否已选中? 表单2中的每个复选框都在表单1中显示不同的消息。示例,如果我打开表单2并选中第一个复选框,并关闭form2。在form1中,消息应显示在标签中。
Form1
private Form2 frm2;
private void Open_frm_btn_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2();
frm2.ShowDialog();
}
private void show_btn_Click(object sender, EventArgs e)
{
if (frm2.checkBox1.Checked)
{
lbl_checkbx1.Text = "Hello";
}
}
错误
当我运行程序时,单击打开Form2按钮并选中消息1复选框并从2关闭然后单击显示按钮。我收到了这个错误。
答案 0 :(得分:1)
在Form1中你会得到:
var form2 = new Form2();
form2.ShowDialog();
if (form2.Check1Checked)
{
label1.Text = "Check1 is checked on form2";
}
if (form2.Check2Checked)
{
label2.Text = "Check2 is checked on form2";
}
form2.Dispose();
在Form2
上设置一些属性以显示复选框的选中值。这样您就不必暴露整个控件。
// C# v5.0 or earlier
public bool Check1Checked
{
get { return checkBox1.Checked; }
}
// C# v6.0
public bool Check2Checked => checkBox2.Checked;
答案 1 :(得分:0)
最简单的方法是将form1作为form2的参数传递,然后将form2复选框与Form1标签链接。
public class Form2 {
private readonly Form1 _form1;
public Form2(Form1 form1) {
_form1 = form1;
}
}
来自Form1,
private void Open_frm_btn_Click(object sender, EventArgs e)
{
Form2 frm2 = new Form2(this);
frm2.ShowDialog();
}