【发布时间】:2009-07-21 19:14:59
【问题描述】:
我的应用程序有两个表单,它们在 Windows 任务栏中可见。当主窗体上弹出模式对话框时,辅助窗体被锁定。但是,当用户单击任务栏上的辅助窗体时,它会出现在模式对话框上方,并且基本上是冻结的。
有没有办法确保模态对话框不会在辅助窗体下方绘制?最顶层的属性不好,因为它依赖于一切,甚至是与应用程序无关的东西。
【问题讨论】:
标签: vb.net forms modal-dialog
我的应用程序有两个表单,它们在 Windows 任务栏中可见。当主窗体上弹出模式对话框时,辅助窗体被锁定。但是,当用户单击任务栏上的辅助窗体时,它会出现在模式对话框上方,并且基本上是冻结的。
有没有办法确保模态对话框不会在辅助窗体下方绘制?最顶层的属性不好,因为它依赖于一切,甚至是与应用程序无关的东西。
【问题讨论】:
标签: vb.net forms modal-dialog
您的问题可能是您没有为对话框指定所有者:
拥有的窗口通常不需要在 Windows 任务栏上有自己的表示,因为它们从属于其所有者。因为激活拥有的窗口会隐含地激活所有者,反之亦然,它只会使任务栏变得混乱,以便同时拥有两者的条目。因此,拥有的表单通常会将其 ShowInTaskBar 属性设置为 false。
以下代码片段(在 VB 和 C# 中)显示了正在创建、拥有和显示的新表单:
// defining an owner form in C#
MyForm ownedForm = new MyForm();
ownedForm.ShowInTaskbar = false;
AddOwnedForm(ownedForm);
ownedForm.Show();
在您的情况下,您似乎需要为对话框设置所有者窗口。这将阻止正在呈现对话框的窗口出现在它之上。
EDIT 应该引用我的来源:.NET Windows Forms in a Nutshell。另外,我省略了 VB.NET 代码。我已经适当地鞭打了自己,但不想费力地翻阅 PDF 文件来追踪它。
【讨论】: