我以前是在子窗口构造函数中把this这个父窗口的对象传递进去。
但无意间发现一个更简单的方法:
在子Form中使用 showDialog(this), 将this(即父窗口传到子窗口)
在子窗口某个函数调用时 用this.owner 取得传入的父亲窗口。就可以调用父窗口的成员和函数了。例子:
父亲窗口:ConfigForm
private void saveCfgBtn_Click(object sender, EventArgs e)
{
ApplyCfgForm applyCfgForm = new ApplyCfgForm();
if(applyCfgForm.ShowDialog(this)==DialogResult.Cancel)
{
MessageBox.Show("取消保存配置");
return;
}
}
子窗口:ApplyCfgForm
private void OKBtn_Click(object sender, EventArgs e)
{
ConfigForm cfgFrm = this.Owner as ConfigForm;
this.CfgName_textEdit.Text = cfgFrm.configName;
if (this.CfgName_textEdit.Text=="")
{
MessageBox.Show("配置名不能为空");
return;
}
CfgName = this.CfgName_textEdit.Text;
this.Close();
}