データグリッドビューの右クリックコンテキストメニュー 質問する

データグリッドビューの右クリックコンテキストメニュー 質問する

.NET Winform アプリにデータグリッドビューがあります。行を右クリックしてメニューをポップアップ表示し、コピー、検証などの項目を選択したいと思います。

A) メニューをポップアップし、B) 右クリックされた行を見つけるにはどうすればよいですか。 selectedIndex を使用できることはわかっていますが、選択されているものを変更せずに右クリックできる必要がありますか? 現在は selected index を使用できますが、選択されているものを変更せずにデータを取得する方法があれば便利です。

ベストアンサー1

CellMouseEnter と CellMouseLeave を使用すると、現在マウスが置かれている行番号を追跡できます。

次に、ContextMenu オブジェクトを使用して、現在の行に合わせてカスタマイズされたポップアップ メニューを表示します。

私が言いたいことを簡単に例で説明すると次のようになります...

private void dataGridView1_MouseClick(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Right)
    {
        ContextMenu m = new ContextMenu();
        m.MenuItems.Add(new MenuItem("Cut"));
        m.MenuItems.Add(new MenuItem("Copy"));
        m.MenuItems.Add(new MenuItem("Paste"));

        int currentMouseOverRow = dataGridView1.HitTest(e.X,e.Y).RowIndex;

        if (currentMouseOverRow >= 0)
        {
            m.MenuItems.Add(new MenuItem(string.Format("Do something to row {0}", currentMouseOverRow.ToString())));
        }

        m.Show(dataGridView1, new Point(e.X, e.Y));

    }
}

おすすめ記事