2013-06-26 3 views
2

У меня есть странная проблема, приложение .net win form запускает стороннее CRM-приложение. Когда клиент работает с CRM-приложением и нажимает на какую-то кнопку в моем приложении, при первом нажатии кнопки не запускается событие, только на втором клике он отвечает.как автофокусировать приложение .Net winform, запущенное в фоновом режиме

Причина, по которой я подозреваю, что мое приложение не в фокусе.

Я попытался с помощью следующего кода

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. 

     }; 

Благодаря

+0

Я действительно не получаю связь между вашей формой и пользовательским интерфейсом приложения CRM, я думаю, что экранный снимок поможет. –

+0

@King King, нет никакого отношения к CRM как таковой, кроме запуска URL-адреса CRM. Я обновил свой вопрос. – AKV

+0

так что же такое основной интерфейс? вашей форме или любой другой? –

ответ

5

В .NET стрип инструмент игнорирует щелчки, когда приложение не имеет фокус. Это похоже на то, как работают слова. Идея здесь заключается в том, что пользователь может щелкнуть «в любом месте» в окне, не беспокоясь о том, что он фактически выполняет действие. Только когда в фокусе окна появится щелчок «подсчет».

Публикация сообщения http://blogs.msdn.com/b/rickbrew/archive/2006/01/09/511003.aspx описывает, как вы можете обойти это. В принципе, вы наследуете от ToolStrip и переопределяете WndProc и меняете WM_MOUSEACTIVATE с результатом MA_ACTIVATEANDEAT на результат MA_ACTIVATE.

+0

Это проблема только в .net V2 или во всех версиях каркаса .Net. – AKV

+2

Он показывает это поведение в каждой версии фреймворка. –

+1

Определенно сделайте это * вместо *, чтобы установить фокус на мыши. Или, если вы предпочитаете фокусировать внимание на мыши, используйте [системные настройки для этого] (http://www.howtogeek.com/howto/windows-vista/switch-windows-by-hovering-the-mouse- over-a-window-in-windows-vista /) вместо того, чтобы внедрять его только для одного приложения - слишком запутанным. –