如何自动聚焦在后台运行的.Net winform应用程序

时间:2013-06-26 04:16:26

标签: c# .net winforms

我有一个奇怪的问题,我的.net win表单应用程序会触发第三方CRM应用程序。当客户使用CRM应用程序并单击我的应用程序中的某个按钮时,首次单击该按钮不会触发该事件,只有在第二次单击时它才会响应。

我怀疑的原因是我的应用程序不是焦点。

我尝试使用以下代码

private void XXXXX_MouseHover(object sender, EventArgs e)
    {
        this.BringToFront();
        this.Focus();
    }

然后它不起作用。我是.Net的新手,任何人都可以指出如何解决这个问题?

非常感谢任何帮助。

更新:我的工具条按钮。

btnbutton.Click += delegate(object sender, EventArgs e)
        {
             //some code to execute on button click.

        };

由于

1 个答案:

答案 0 :(得分:5)

当应用程序没有焦点时,.NET工具条会忽略点击次数。这就像单词的工作原理。这里的想法是用户可以点击窗口中的“任何地方”,而不必担心他实际上执行了一个动作。只有当窗口具有焦点时,才会点击“计数”。

http://blogs.msdn.com/b/rickbrew/archive/2006/01/09/511003.aspx上的帖子描述了如何解决这个问题。基本上,您从ToolStrip继承并覆盖WndProc,并将WM_MOUSEACTIVATE结果更改为MA_ACTIVATEANDEAT结果。