2

奇妙な問題があります。.net win フォーム アプリケーションがサード パーティの CRM アプリケーションをトリガーします。顧客が CRM アプリケーションで作業していて、私のアプリケーションのボタンをクリックすると、最初のクリックではボタンはイベントをトリガーせず、2 回目のクリックでのみ応答します。

私が疑う理由は、私のアプリケーションがフォーカスされていないことです。

次のコードで試しました

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.

        };

ありがとう

4

1 に答える 1

5

アプリケーションにフォーカスがない場合、.NET ツール ストリップはクリックを無視します。これは言葉の仕組みと同じです。ここでの考え方は、ユーザーが実際にアクションを実行することを心配することなく、ウィンドウ内の「どこでも」クリックできるということです。ウィンドウにフォーカスがある場合にのみ、クリックが「カウント」されます。

http://blogs.msdn.com/b/rickbrew/archive/2006/01/09/511003.aspxの投稿では、これを回避する方法について説明しています。基本的に、 を継承しToolStripてオーバーライドし、結果を含む を結果にWndProc変更します。WM_MOUSEACTIVATEMA_ACTIVATEANDEATMA_ACTIVATE

于 2013-06-26T04:42:11.040 に答える