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

わんくま同盟

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

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

■98287 / 1階層)  データグリッドビューでクリックだけで複数行選択
□投稿者/ KOZ (162回)-(2021/10/28(Thu) 15:39:56)
2021/10/28(Thu) 15:56:13 編集(投稿者)

Framework のソースを見ると Ctrl キーの検出は Control.ModifierKeys を参照しています。

「DataGridView.OnCellMouseDown」
https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/DataGridViewMethods.cs,6a150dea03bc38af

Control.ModifierKeys では GetKeyState を呼び出しています。

「Control.ModifierKeys」
https://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/Control.cs,6561698e6020148f

「GetKeyState function (winuser.h)」
https://docs.microsoft.com/ja-jp/windows/win32/api/winuser/nf-winuser-getkeystate

なので、WM_LBUTTONDOWN が来たら、keybd_event で Ctrl キーを押した状態にして WndProc を呼び出せばいけるかもしれません。
(WndProc を呼び出した後は、元に戻す)

「keybd_event function (winuser.h)」
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-keybd_event

OnCellMouseDown をオーバーライドしてもいいかもしれません。

編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←データグリッドビューでクリックだけで複数行選択 /tosh →Re[2]: データグリッドビューでクリックだけで複数行選択 /tosh
 
上記関連ツリー

データグリッドビューでクリックだけで複数行選択 / tosh (21/10/28(Thu) 09:22) #98283
Re[1]: データグリッドビューでクリックだけで複数行選択 / 大谷刑部 (21/10/28(Thu) 13:34) #98286
データグリッドビューでクリックだけで複数行選択 / KOZ (21/10/28(Thu) 15:39) #98287 ←Now
│└ Re[2]: データグリッドビューでクリックだけで複数行選択 / tosh (21/10/28(Thu) 17:03) #98289 解決済み
Re[1]: データグリッドビューでクリックだけで複数行選択 / 魔界の仮面弁士 (21/10/28(Thu) 16:37) #98288
  └ Re[2]: データグリッドビューでクリックだけで複数行選択 / tosh (21/10/28(Thu) 17:11) #98290

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