关于获取.net,winform应用程序主窗体问题
来源:互联网 发布:人工智能四大开放平台 编辑:程序博客网 时间:2024/06/10 17:06
1、主窗体定义:
就是在应用程序中通过application.run启动的第一个窗体
2、设想的解决方案:
(1)通过System.Diagnostics.Process().GetCurrentProcess().MainWindowHandle
和当前窗体的Handle进行比较,相等则为主窗体,否则不是。
这个方案的问题:
其一:如果子窗体是通过ShowDialog(),ShowDialog(this),Show(this)显示出来的时候,这个方法是可行的,
但是,一旦子窗体是通过Show()方法显示出来的,则这个方法就不在是Application.Run运行起来那个窗体了,
而是变成当前显示的窗体,也就是说System.Diagnostics.Process().GetCurrentProcess().MainWindowHandle
属性无法获取Show方式弹出窗体的主窗体句柄。
其二:这个方法看到msdn的例子,个人感觉更适合做运行外接程序时使用,并且,
仅当进程有图形界面时,该进程才具有与其关联的主窗口。如果关联进程没有主窗口,则 MainWindowHandle 值为零。如果刚启动了一个进程,并且想使用其主窗口句柄,则请考虑使用WaitForInputIdle 方法让该进程完成启动,从而确保创建了主窗口句柄。否则,将引发异常。
InvalidOperationException
未定义 MainWindowHandle,因为进程已退出。
NotSupportedException
试图检索在远程计算机上运行的进程的 MainWindowHandle。
PlatformNotSupportedException
该平台为 Windows 98 或 Windows Millennium Edition (Windows Me);如果将 ProcessStartInfo.UseShellExecute 设置为 false,则可以在 Windows 98 和 Windows Me 上访问此属性。
有人说OpenForms集合中OpenForms[0]为主窗体,即为 Application.Run(Form mainForm)启动的窗体,但是并没有在微软的官网上
查找到类似的说明。仅仅是说Application.Run启动的窗体会在启动时,自动注册窗体的Closed事件,在事件处理过程中调用ExitThread 方法仅此而已。
(3)在程序中定义主窗体引用定义,然后在主窗体被Run的地方对这个引用指向主窗体,这样做可以,但是如果我的程序是以插件的形式,原本是插件
是不需要知道主程序存在的,那么如果这样定义了,我就需要在插件中判断主程序的这个属性,这样插件就与主程序耦合了,所以也不是我想要的。
================================
目标:
找一种方法,可以利用平台提供的属性方法,直接获取到我Application.Run运行的窗体,而不需要在应用程序中自己额外定义这样类似的属性??
- 关于获取.net,winform应用程序主窗体问题
- 关于winform窗体传值的问题
- .net framework 4.5 使用c++编写窗体(WinForm)应用程序
- 关于winForm窗体最大化时全屏及遮盖任务栏问题
- winform下,子窗体向主窗体传值问题
- winform 窗体 键盘按键 获取
- .NET创建winform透明窗体
- 关于WinForm引用WPF窗体
- C# WinForm 窗体应用程序,调用 javascript 脚本
- 关于C#窗体应用程序调用google翻译api的问题
- winform窗体间传值的问题
- winform窗体间传值的问题
- 解决winform窗体闪烁问题
- C# winForm 窗体闪烁问题
- 解决winform窗体闪烁问题
- 解决winform窗体闪烁问题
- C# winForm中主窗体Form获取弹出窗体的中值最简单方法
- DevExpress14.1汉化 C# Winform应用程序,Windows窗体应用程序
- kettle使用sql查询
- jrtplib介绍 [转]
- 黑马程序员--09.动态与代理AOP--02【Class.forName方法扩展】【Proxy类I】
- 界面与逻辑的关系设计
- 中文输入法无法触发onkeyup事件的问题
- 关于获取.net,winform应用程序主窗体问题
- Cobalt Strike Windows版破解
- Oracle数据库安装及配置
- 绝对值排序
- 利用WM_CTLCOLOR消息实现编辑控制(Edit Control)的文本与背景色的改变
- HDU 1235 统计同成绩学生人数
- u-boot.lds文件诠释
- poj 1328 Radar Installation(nyoj 287 Radar):贪心
- Oracle的RBO和CBO