我是C#的新手,还在努力学习(在一些非常耐心的朋友的帮助下)。
我在将新的windows窗体的TopMost
属性设置为true
时遇到了问题。一个工作正常,一个不工作。
这两种形式都将TopMost
属性设置为true
。
- Form1显示窗口,当我尝试在它后面单击时,窗体闪烁几次并发出Windows哔哔声。
- Form2也会显示表单,但当我在它后面按一下时,表单会变成灰色(或失去焦点),而我可以在主表单上按一下。
我已经搜索了这个问题的答案,并找到了一个建议将this.TopMost = true;
放在窗体的load事件中的答案,但没有起作用。
我所做的唯一更改(可能有影响,也可能没有影响)是Form1是使用属性中的.NET 4.5设置创建的,在创建Form2之前,我将其更改为.NET 3.5(客户端配置文件)。我尝试将其更改回来,但没有任何帮助。在删除并再次创建Form2之前,有人有什么想法吗?
非常感谢。(如果你需要更多的信息,请告诉我)
6条答案
按热度按时间vwoqyblh1#
TopMost是一个属性,用于确保一个窗口总是显示在应用程序中所有其他窗口的上方。微软的例子是一个查找和替换工具。
您发现的不同之处在于,Form1是通过使用ShowDialog创建为模式对话框的。“显示对话框”可确保在再次使用应用程序中的所有其他窗口之前必须关闭窗体。例如:使用表单获取要输入到父表单数据库中的用户数据。
Show用于当你不介意你的用户是否已经完成他们的对话框时,比如允许你的用户有机会使用一些实用程序(如计时器,秒表)来帮助一个程序的主函数。
当使用不同的.Net框架时,我能想到的唯一视觉差异是不同的窗口对话框(如OpenFileDialog),它们在整个框架中进行了更新
h9vpoimq2#
它可能会帮助你;
xiozqbni3#
此链接从微软确认,这可能是一个错误,在Windows 7和Windows Server 2008 R2我已经面对它在Windows 7嵌入式系统和提供的补丁修复问题,所以请考虑看看:)
http://support.microsoft.com/kb/2587473/en-us
希望它有所帮助!
gdrx4gfi4#
DIY的方式-工作100%!
wxclj1h55#
在我的解决方案中也有类似的问题。在使用重载的Show函数后,它工作了:
gorkyyrv6#
在Shown事件中添加以下代码: