1

自从我使用 Windows 窗体应用程序以来已经有一段时间了。我在主窗体上有一个复选框,并且根据特定条件,如果需要打开第二个窗体以向用户请求其他数据,我应该如何将消息从第二个传递(或获取)回主窗体表格以便我可以判断是否可以选中或取消选中复选框?

据我所知,我可以使用 Pass by 之类的东西ref。还是有更好的方法来实现这一点?

4

2 回答 2

3

由于您将子表单显示为对话框,并且父表单在表单关闭之前不需要它,您需要做的就是向子表单添加一个带有公共 getter 和私有 setter 的属性,设置值在适当的时候在子窗体中,然后在调用ShowDialog.

于 2012-10-19T14:29:37.053 回答
1

一种方法是使用事件。

在您的子表单中,声明一个在特定用户交互时引发的事件,并在您的主表单中简单地“订阅”该事件。

当您实例化并称您为子表单时,您会这样做:

private void button1_Click(object sender, EventArgs e)
{
    Form2 frm = new Form2();
    frm.MyEvent += frm_MyEvent;
    frm.ShowDialog();
    frm.MyEvent -= frm_MyEvent;
}

private void frm_MyEvent(object sender, EventArgs e)
{
    textBox1.Text = "whatever"; //just for demo purposes
}

在您的子表单中,您声明事件并引发它:

public event EventHandler MyEvent;

private void button1_Click(object sender, EventArgs e)
{
    if (MyEvent!= null)
        MyEvent(this, EventArgs.Empty);
}

希望这可以帮助

于 2012-10-19T15:11:25.220 回答