winform のコード ビハインド ファイルでこれを実行中に問題が発生しました。
// Waiting Cursor + disabling form
Cursor = Cursors.WaitCursor;
this.Enabled = false;
// Synchronous method
SomeWork();
// Re-enabling form
Cursor = Cursors.Default;
this.Enabled = true;
現在の動作
たとえば、ボタンをクリックするとSomework()
、フォームを再度有効にした後、ボタンに関連付けられたメソッドが実行されます。
予想される動作
フォームが無効になっている間、フォームからユーザーのクリックイベントを保存することは期待していません。
質問
フォームのClicking キャッシュを空にする方法はありますか (フォームを再度有効にする前に行うように) ?
重要な編集
考えられる簡単なIMessageFilter
解決策は、フォームの背後にあるコードでインターフェイスを実装することです。これを使用すると、左を無効にするのは簡単に思えますPreFilterMessage
:
public bool PreFilterMessage(ref Message m)
{
// Blocks all the messages relating to the left mouse button.
return (m.Msg >= 513 && m.Msg <= 515) ;
}
ただし、マウスの左クリックを無効にして再度有効にしても、マウスバッファは空になりません...