C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■93238 / 1階層)  DataGridViewのCellDoubleClick
□投稿者/ KOZ (54回)-(2019/11/29(Fri) 09:03:25)
No93213 (Rider さん) に返信
> どうせならTimerを使わずに、CurrentCellChangedとCellDoubleClickの
> 両イベントを両立させたいのですが、何か良い方法はないでしょうか?

Windows Forms のダブルクリックってちょっと変わった処理をしていて、次のようになっています。

左ボタン    メッセージ          イベント

@ 押す     WM_LBUTTONDOWN      MouseDown
                                CurrentCellChanged
A 離す     WM_LBUTTONUP        MouseClick
                                MouseUp
B 押す     WM_LBUTTONDBLCLK    MouseDown

C 離す     WM_LBUTTONUP        CellDoubleClick
                                MouseDoubleClick
                                MouseUp

「B 押す」では、MouseDown イベントを起こし、「C 離す」で、CellDoubleClick/MouseDoubleClick イベントを起こしています。

ここで問題なのが、「C 離す」でダブルクリック系のイベントを起こすかどうかを判定していること。

判定はフラグ管理で行われているのですが、WM_LBUTTONUP が来る前に、フラグをリセット
するような処理が走ってしまうとイベントが起きなくなってしまいます。

私だったら Bで WM_LBUTTONDBLCLK を拾ってダブルクリックの処理をやっちゃいます。

# CurrentCellChanged で編集モードにする等の処理を行っていると動きは変わってきますので
# そこは注意深く観察してみてください。

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←DataGridViewのCellDoubleClick /Rider →Re[2]: DataGridViewのCellDoubleClick /Rider
 
上記関連ツリー

DataGridViewのCellDoubleClick / Rider (19/11/28(Thu) 10:39) #93213
Re[1]: DataGridViewのCellDoubleClick / 大谷刑部 (19/11/28(Thu) 13:41) #93217
│├ Re[2]: DataGridViewのCellDoubleClick / 大谷刑部 (19/11/28(Thu) 14:16) #93219
│└ Re[2]: DataGridViewのCellDoubleClick / Rider (19/11/28(Thu) 14:48) #93220
│  └ Re[3]: DataGridViewのCellDoubleClick / 大谷刑部 (19/11/28(Thu) 15:41) #93222
│    └ Re[4]: DataGridViewのCellDoubleClick / Rider (19/11/28(Thu) 16:15) #93223
│      ├ Re[5]: DataGridViewのCellDoubleClick / Hongliang (19/11/28(Thu) 16:41) #93224
│      │├ Re: DataGridViewのCellDoubleCli / Rider (19/11/28(Thu) 17:19) #93228
│      ││└ Re[7]: DataGridViewのCellDoubleClick / 大谷刑部 (19/11/28(Thu) 17:25) #93230 解決済み
│      ││  └ Re[8]: DataGridViewのCellDoubleClick / Zurishin (19/11/28(Thu) 20:46) #93234 解決済み
│      │├ Re[6]: DataGridViewのCellDoubleClick / 大谷刑部 (19/11/28(Thu) 17:17) #93227
│      │└ Re[6]: DataGridViewのCellDoubleClick / Rider (19/11/28(Thu) 17:24) #93229 解決済み
│      └ Re[5]: DataGridViewのCellDoubleClick / 大谷刑部 (19/11/28(Thu) 17:15) #93226
DataGridViewのCellDoubleClick / KOZ (19/11/29(Fri) 09:03) #93238 ←Now
  └ Re[2]: DataGridViewのCellDoubleClick / Rider (19/11/29(Fri) 09:27) #93239
    └ Re: DataGridViewのCellDoublecli / Rider (19/11/29(Fri) 10:02) #93243
      └ Re[4]: Re: DataGridViewのCellDoublecli / KOZ (19/11/29(Fri) 10:26) #93244
        └ Re[5]: Re: DataGridViewのCellDoublecli / KOZ (19/11/29(Fri) 10:42) #93245
          └ Re[6]: Re: DataGridViewのCellDoublecli / KOZ (19/11/29(Fri) 16:29) #93246

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信