.net – Windows窗体和ShowDialog问题
我有一个无边框
Windows Forms应用程序.
主窗口使用ShowDialog()创建其他形式(我可以单击是或否的简单对话框). 但是,如果在我的应用程序没有焦点的情况下创建对话框(例如,用户启动一个长时间运行的任务,开始处理其他事情,而在后台,我的应用程序显示一个对话框“任务完成.. “)我希望回到我的应用程序,事情变得奇怪了. >如果我单击任务栏以聚焦我的应用程序,主窗口将被聚焦(而不是对话框). 有没有办法防止这种情况发生? 更新: 解决方案是将顶级窗口传递给ShowDialog()方法(在大多数情况下,如果使用的形式是“this”). 因为我不想重构我的整个代码,并且我的所有表单都继承自“MyCustomFormBase”,这里有一个很好的解决方案. Public Class MyCustomFormBase Public Shared Property ApplicationMainForm() As Form Get Return _applicationMainform End Get Set(ByVal value As Form) _applicationMainform = value End Set End Property Private Shared _applicationMainform As Form Public Shadows Function ShowDialog() As DialogResult If MyCustomFormBase.ApplicationMainForm IsNot Nothing Then Return MyBase.ShowDialog(MyCustomFormBase.ApplicationMainForm) Else Return MyBase.ShowDialog() End If End Function Public Shadows Function ShowDialog(ByVal owner As IWin32Window) As DialogResult Return MyBase.ShowDialog(owner) End Function End Class 在我使用的主窗口的构造函数中 MyCustomFormBase.ApplicationMainForm = Me 一旦.它帮助我进行了半天的重构;) 解决方法
您是否尝试将对主窗口的引用传递给ShowDialog调用?
// assuming this code is in the main form (so "this" refers to the main form) DialogForm dialog = new DialogForm(); DialogResult result = dialog.ShowDialog(this); 引自documentation of this overload:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- windows – 由于额外的读取而在网络上读取文件很慢
- 如何在Windows(非Java)应用程序中使用Java时区ID?
- windows-server-2003 – 如何备份和恢复Windows 2003防火墙
- 从XP中隐藏或剪切的窗口复制内容?
- 强制.NET互操作使用本地COM DLL
- 创建Windows Service
- windows – 如果我调用GetOpenFileNameA,GetOpenFileNameW会
- windows-server-2012 – 带有本地存储的Windows 2012上的群
- 2003服务器A级BT安全配置指南(1/3)
- Windows – 如何在另一个安装程序中创建安装程序?