【发布时间】:2017-10-16 11:54:28
【问题描述】:
我正在尝试使用 Form.ShowDialog 显示一个表单,如下所示:
var f = new Form();
if(f.ShowDialog() == DialogResult.OK)
{
...
}
...
if(f.ShowDialog() == DialogResult.OK)
{
...
}
问题是一旦返回对话结果并关闭表单就会调用 OnHandleDestroyed。
- 为什么我关心 OnHandleDestroyed?我在表单上有一个 OpenGL 控件,它会在调用 OnHandleDestroyed 时释放上下文。
- 为什么我不处理表单,并在新表单上使用 ShowDialog?我正在尝试重用表单,因为加载表单很慢 - 但用数据填充它很快。
所以问题是:是否可以在不关闭表单(并隐藏它)的情况下使用 ShowDialog() 或使用 Show() 和 Hide() 以模态方式显示表单?
【问题讨论】:
-
您可以编写自己的逻辑来隐藏输入的表单
-
但是如何保持它的模态?
-
@Sinatr,它不是那个重复的,因为我特别希望表单是模态的。
-
那么不要关闭它。你必须选择:要么每次都重新创建opengl的东西,要么..不要关闭表单。有一些方法可以使无模式形式成为模态,例如here.
标签: c# .net winforms modal-dialog