使用另一个表单来显示带有复选框的数据C#

时间:2016-02-16 17:17:55

标签: c# .net forms winforms checkbox

我正在使用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";
        }
    }

enter image description here

错误

当我运行程序时,单击打开Form2按钮并选中消息1复选框并从2关闭然后单击显示按钮。我收到了这个错误。

enter image description here

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(); 
    }