【问题标题】:How to Activite form when clicked anywhere on the form?单击表单上的任意位置时如何激活表单?
【发布时间】:2011-09-20 03:58:13
【问题描述】:

我的 C# 应用程序运行良好,并且在被要求时始终保持领先。我面对和想要的是:

假设我的应用程序已打开,并且另一个应用程序(例如记事本)也打开了一半,与我的应用程序窗口重叠。当我们单击记事本上的任意位置时,它就会被激活。而对于我的应用程序,我必须单击窗口的顶部栏以使其处于活动状态。为什么这样 ?我想让我的应用程序处于活动状态并在用户单击表单上的任何位置时显示在前面,而不仅仅是顶部栏。

我需要设置或实现什么来完成此操作?

【问题讨论】:

  • 我没有这个问题。创建新的简单项目并与您的应用程序进行比较。或者给我们一些更多的细节
  • 我创建了另一个项目,表单中没有任何内容,并尝试了相同的情况。单击该表单中的任何位置时,它都会出现在前面。您需要告诉哪些细节,将分享 - 我只是不明白该放什么,因为该应用程序很大。但会发布您需要的所有详细信息 - 请给我一些想法。

标签: c# winforms focus activation


【解决方案1】:

尝试这样做,在 Form1_MousClick 事件中输入此代码

bool top = this.TopMost;
this.TopMost = true;
this.TopMost = top;

【讨论】:

  • TopMost 仅设置为默认值,即 False。我添加了 MouseClick 事件并添加了上面的代码“this.TopMost = True;”没用。尝试使用“this.BringToFront()”。还添加了一个 MessageBox,但从未仅显示 - 因此 MouseClick 没有被触发或捕获!嗯。
  • 尝试隐藏表单并再次显示,或者最小化和最大化。
  • 因为你有更好的解决方案?!
【解决方案2】:

没有,如果您单击窗口上的任意位置,它将获得焦点并成为最顶部的窗口,除非另一个窗口“始终位于顶部”。

【讨论】:

  • Windows 资源管理器和我的应用程序已打开且可见,但 Win Explorer 与我的应用程序的半屏重叠。 Win Exp 有焦点。我点击我的应用程序表单(中间),win exp 的焦点丢失了。单击 TAB 组件时,我的应用程序中没有焦点(所以我相信它没有焦点)。当我单击我的应用程序的标题栏时,它会出现在顶部并具有完全的焦点。现在,当我单击我的应用程序(在没有放置组件的窗体中间)时,来自 win exp 的焦点丢失了,但我的应用程序也没有完全激活。如何激活它并像按下标题栏一样将其置于前面。
  • 嗯,以上是点击没有组件的地方的场景。但是,如果我点击我的应用程序组件,如图片、标签、框等,那么它的行为就像按标题栏一样正确。但是当点击没有组件的地方时,它的反应会有所不同。如何处理那些没有组件和用户点击并且应用排在首位的位置?
  • 要么您编写了一些代码来明确阻止它出现在屏幕前面,要么您正在使用执行此操作的组件或库,或者所述组件或库中存在错误。 Windows 的行为与您描述的不同。
  • 同意一定有一些错误,或者可能是在某个地方设置了使 ut ac 像这样。但并没有明确阻止它的到来。为什么单击没有组件的地方时它不会出现在前面,如果单击组件,它会出现。我只使用标准组件。我不认为这是任何组件或库问题。哪些可能的设置会影响这样的结果?就像单击放置组件(例如 GroupBox、PictureBox 等)的位置一样,它会出现在顶部;但是放置 nnothing 的地方并没有放在首位,您知道任何设置吗?
【解决方案3】:

问题在于覆盖 WndProc。删除了一个不必要的声明,事情得到了解决。感谢大家的努力。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    • 2021-01-14
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-20
    相关资源
    最近更新 更多