我想知道如果用户单击 Windows 窗体中的关闭按钮是否有任何事件处理程序。我最初的计划是当用户单击关闭按钮时,它会返回一个 bool 值给调用者或调用该表单的人。例如
public void newWindow(){
NewForm nw = new NewForm();
nw.ShowDialog();
if(nw.isClosed){
do something
}
}
这可能吗?
最佳答案
如果您使用的是 .ShowDialog(),则可以通过 DialogResult 属性获取结果。
public void newWindow()
{
Form1 nw = new Form1();
DialogResult result = nw.ShowDialog();
//do something after the dialog closed...
}
然后在 Form1 上的点击事件处理程序中:
private void buttonOk_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.OK;
}
private void buttonCancel_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.Cancel;
}
如果您不想以对话框形式打开新表单,您可以这样做:
public void newWindow()
{
Form2 nw = new Form2();
nw.FormClosed += nw_FormClosed;
nw.Show();
}
void nw_FormClosed(object sender, FormClosedEventArgs e)
{
var form = sender as Form2;
form.FormClosed -= nw_FormClosed; //unhook the event handler
//you can still retrieve the DialogResult if you want it...
DialogResult result = form.DialogResult;
//do something
}
关于c# - 在 Windows 窗体中单击关闭按钮时的事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9866207/