我无法以编程方式关闭其中一个表单。有人能帮助我吗?
以下是代码:
private void WriteCheck_Load(object sender, EventArgs e) {
SelectBankAccountDialog sbad = new SelectBankAccountDialog();
DialogResult result = sbad.ShowDialog();
if (result == DialogResult.Cancel) {
this.Close();
} else {
MessageBox.Show(result.ToString());
}
MessageBox.Show(sbad.bankaccountID.ToString());
}
答案 0 :(得分:4)
正如配置程序中提到的那样(在评论中),表单必须在关闭之前显示,因此,您应该在显示事件中执行此操作,而不是加载事件。 em>事件而不是。
如果您不希望对话框中显示该表单,我猜您可以将事件代码包装在Visible = false中;
总之,基本代码是
private void WriteCheck_Shown(object sender, EventArgs e)
{
Visible = false;
SelectBankAccountDialog sbad = new SelectBankAccountDialog();
DialogResult result = sbad.ShowDialog();
if (result == DialogResult.Cancel) {
this.Close();
} else {
MessageBox.Show(result.ToString());
}
MessageBox.Show(sbad.bankaccountID.ToString());
Visible = true;
}
答案 1 :(得分:3)
通过调用Form.Close()
,表单应该关闭,但是直到所有等待事件都被处理完毕。您还有机会取消FormClosing
活动中的表单结束。
首先,在您致电return
后,您可能希望this.Close()
。如果它仍未关闭,请逐步执行代码并查看发生的情况。您可能必须设置并检查“强制关闭”标志,并在实际关闭之前从任何其他处理方法返回。
答案 2 :(得分:0)
实际问题是windows不会让表单关闭它的加载方法。我必须在构造上显示对话框,然后如果对话框结果取消,我必须抛出异常并在表单创建时捕获异常。
This place更多地谈论它