動くコード図鑑技術記事現場の渡り方キャリア論すべての記事About
C#

パターン3: ContextMenuStrip + DataGridView —右クリック編集メニュー

出典: WinForms メニュー3兄弟 — MenuStrip / ToolStrip / ContextMenuStrip の使い分けと DataGridView 連携パターン3: ContextMenuStrip + DataGridView —右クリック編集メニュー

パターン3: ContextMenuStrip + DataGridView —右クリック編集メニュー (csharp)#a8ee6da07168
public partial class MasterForm : Form
{
    public MasterForm()
    {
        InitializeComponent();
 
        //デザイナでContextMenuStrip (rowContextMenu)を追加し、
        // Itemsに「編集」「削除」を登録しておく
 
        // DataGridViewにContextMenuStripを紐付け
        masterGridView.ContextMenuStrip = rowContextMenu;
 
        //右クリックされた行を検出するためのイベント
        masterGridView.CellMouseDown += MasterGridView_CellMouseDown;
 
        //「編集」メニューのClickイベント
        editToolStripMenuItem.Click += (sender, e)=>
        {
            EditCurrentRow();
        };
 
        //「削除」メニューのClickイベント
        deleteToolStripMenuItem.Click += (sender, e)=>
        {
            DeleteCurrentRow();
        };
    }
 
    private void MasterGridView_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
    {
        //右クリックの時のみ処理
        if (e.Button != MouseButtons.Right)return;
        if (e.RowIndex < 0)return;  //ヘッダ行は対象外
 
        //右クリックした行をカレント行に切り替え
        masterGridView.CurrentCell = masterGridView.Rows[e.RowIndex].Cells[0];
    }
 
    private void EditCurrentRow()
    {
        if (masterGridView.CurrentRow == null)return;
        var id = (int)masterGridView.CurrentRow.Cells["id"].Value;
        //編集画面を開く
    }
 
    private void DeleteCurrentRow()
    {
        if (masterGridView.CurrentRow == null)return;
        var id = (int)masterGridView.CurrentRow.Cells["id"].Value;
        //削除確認→削除実行
    }
}
▸ この snippet は実行結果未収録
▸ 実行結果は未収録です
  • id: #a8ee6da07168
  • lines: 52
  • extracted: 2026-06-10

Source収録記事

この snippet は記事の「パターン3: ContextMenuStrip + DataGridView —右クリック編集メニュー」セクションに登場する。コードの前後の文脈・ハマりどころの解説は記事本文で。

同じ記事から

5
図鑑トップ