自从我使用 Windows 窗体应用程序以来已经有一段时间了。我在主窗体上有一个复选框,并且根据特定条件,如果需要打开第二个窗体以向用户请求其他数据,我应该如何将消息从第二个传递(或获取)回主窗体表格以便我可以判断是否可以选中或取消选中复选框?
据我所知,我可以使用 Pass by 之类的东西ref
。还是有更好的方法来实现这一点?
由于您将子表单显示为对话框,并且父表单在表单关闭之前不需要它,您需要做的就是向子表单添加一个带有公共 getter 和私有 setter 的属性,设置值在适当的时候在子窗体中,然后在调用ShowDialog
.
一种方法是使用事件。
在您的子表单中,声明一个在特定用户交互时引发的事件,并在您的主表单中简单地“订阅”该事件。
当您实例化并称您为子表单时,您会这样做:
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);
}
希望这可以帮助