我有一个 MDI 应用程序,我想在其中使用模式对话框...是的,我知道这有点违反 MDI 的原则...无论如何,我的主窗口更像是一个“工作空间”然后是其他任何东西。
回到主题,如何等待 MDI-Child 关闭?一些示例代码:
public void DoSomething() {
String searchterm = this.TextBox1.Text;
MyItem result = MySearchForm.GetItem(searchterm);
if(MyItem != MyItem.Empty) {
// do something
}
}
MySearchForm是主窗口的MDI子级,所以我不能使用ShowDialog(),但我仍然想使用阻塞方法来等待窗口关闭并返回结果。我考虑过在另一个线程上调用它并等待该线程退出,但这也不适用于 MDI。
有人有想法吗?
最佳答案
在 MDI 应用程序中使用对话框是很正常的,它并不违反 MDI 约定。只是不要将其设为 MDI 子窗口。这很糟糕,因为你无法使其成为模态。如果您将其设置为非模态,那么当用户最小化窗口时会发生令人困惑的事情。
只需使用 ShowDialog(owner) 或 Show(owner) 方法(分别为模式和非模式)并将 MDI 父级作为所有者传递。该对话框将始终位于子窗口的顶部。您通常确实需要 StartPosition = Manual 并设置 Location,以便确保它在父框架内的适当位置启动。
关于c# - 等待MDI子进程关闭,类似于ShowDialog(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3131618/