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

わんくま同盟

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

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

■98283 / 親階層)  データグリッドビューでクリックだけで複数行選択
□投稿者/ tosh (2回)-(2021/10/28(Thu) 09:22:06)

分類:[C#] 

お世話になります。

DataGridViewで、Ctrlキーを押さなくてもクリックだけでセルを複数行選択できるようにしたいです。

この掲示板の過去ログを調べたところ同様の質問があり、回答として
「DataGridView.WndProcのオーバーライドでCTRLキーが押されているように偽装する」
の一文と共に、方法が書かれたページのリンクが張ってあったのですが
リンクが切れていたため、具体的な方法がわかりませんでした。

回答の一文からWParamの値を書き換えるのではないかと推測し、以下の様な継承クラスを作って
実装して検証してみましたが、左クリック時にWParamの値は書き換わったものの行の複数選択はできず
別の行をクリックすると前の行の選択は解除されてしまいます。
方法が間違っているのだろうと思いますが、どうすれば実現できるでしょうか。

namespace System.Windows.Forms
{
    public class DataGridViewCustom : DataGridView
    {
        [SecurityPermission(SecurityAction.Demand,
        Flags = SecurityPermissionFlag.UnmanagedCode)]
        protected override void WndProc(ref Message m)
        {
            const int WM_LBUTTONDOWN = 0x0201;
            const int MK_CONTROL = 0x0008;
            
            switch (m.Msg)
            {
                case WM_LBUTTONDOWN:

                    int tmp = (int)m.WParam;
                    tmp |= MK_CONTROL;

                    m.WParam = (IntPtr)tmp;

                    break;
            }
            base.WndProc(ref m);
        }
    }
}


編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
親記事 →Re[1]: データグリッドビューでクリックだけで複数行選択 /大谷刑部
→Re[1]: データグリッドビューでクリックだけで複数行選択 /KOZ
→Re[1]: データグリッドビューでクリックだけで複数行選択 /魔界の仮面弁士
 
上記関連ツリー

データグリッドビューでクリックだけで複数行選択 / tosh (21/10/28(Thu) 09:22) #98283 ←Now
Re[1]: データグリッドビューでクリックだけで複数行選択 / 大谷刑部 (21/10/28(Thu) 13:34) #98286
Re[1]: データグリッドビューでクリックだけで複数行選択 / KOZ (21/10/28(Thu) 15:39) #98287
│└ 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

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