我对C#还是很陌生,但仍然想尽一切办法(在一些非常有耐心的 friend 的帮助下)。

将新的Windows窗体的TopMost属性设置为true时遇到问题。我有两种(几乎)相同的表格; 1可以正常工作,而另一种则不能工作。

两种形式都将TopMost属性设置为true

  • Form1显示了该窗口,当我尝试单击它的后面时,该表单会闪烁几次并发出蜂鸣声。
  • Form2也显示该表单,但是当我在表单后面单击时,该表单变灰(或失去焦点),并且可以单击主表单。

  • 我一直在寻找这个问题的答案,并找到了一个建议将this.TopMost = true;放入表单的load事件中的答案,但是那没有用。

    我更改过的唯一可能生效或未生效的事情是,在属性中设置了.NET 4.5的情况下创建了Form1,在创建Form2之前,我将其更改为.NET 3.5(客户端配置文件)。我曾尝试将其改回,但并没有帮助。在我再次删除并创建Form2之前,是否有人有任何想法?

    提前谢谢了。
    (如果您需要更多信息,请告诉我)

    最佳答案

    TopMost是用于确保在应用程序中始终始终将一个窗口显示在所有其他窗口之上的属性。 Microsoft的示例是查找和替换工具。

    您发现的区别是,通过使用ShowDialog将Form1创建为模式对话框。显示对话框可确保您必须先关闭窗体,然后才能再次使用该应用程序中的所有其他窗口。例如;使用表单获取用户数据以输入父表单数据库。

    当您不介意用户是否完成对话时使用Show,例如让您的用户有机会使用一些有助于程序主要功能的实用程序(例如计时器,秒表)。

    使用不同的.Net框架时,我唯一能想到的视觉差异就是不同的Windows对话框(例如OpenFileDialog),这些对话框在整个框架中均已更新

    10-04 19:03