我正在尝试使用Form.ShowDialog显示一个表单,如下所示:
var f = new Form();
if(f.ShowDialog() == DialogResult.OK)
{
...
}
...
if(f.ShowDialog() == DialogResult.OK)
{
...
}
问题是,一旦返回对话框结果并关闭表单,就会调用OnHandleDestroyed。
所以问题是:是否可以在不关闭表单的情况下使用ShowDialog()(并隐藏它)或使用Show()和Hide()以模态方式显示表单?
答案 0 :(得分:4)
当您使用ShowDialog
展示表单时,关闭表单DestroyHandle
后会自动调用。
要防止此行为,您可以覆盖DestroyHandle
方法并编写自己的逻辑。
示例强>
public class MyForm : Form
{
protected override void DestroyHandle()
{
if (!Modal || Disposing)
base.DestroyHandle();
}
}