DataGridView で行削除の制御(サンプルあり)
📋 目次(クリックで展開)
Windows Forms DataGridView で、行削除の制御方法を紹介します。
行削除の無効化
デフォルトの設定で、エンドユーザーによる行の削除機能が有効化されています。行の削除を無効化するには、AllowUserToDeleteRows プロパティに false を設定します。
private void Form1_Load(object sender, EventArgs e){ ...
this.dataGridView1.AllowUserToDeleteRows = false;
...}確認ダイアログによる行削除
ビジネス用件によっては、ユーザー確認による行の削除を決定する場合もあると思います。この場合、MessageBox による行削除のユーザー確認を加えることができます。プロパティによる制御ではなく、UserDeletingRow イベントを用いたイベント制御を行います。行削除を取りやめる場合には、e.Cancel = true; とします。行削除を行う場合は、特別な実装は不要で、そのままイベントを抜けます。
private void DataGridView2_UserDeletingRow(object? sender, DataGridViewRowCancelEventArgs e){ // 行 ID による行削除の確認 var rowId = (int)e.Row?.Cells["ID"].Value; var result = MessageBox.Show( $"行ID:{rowId} を削除しますか?", "行削除の確認", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (result != DialogResult.OK) { e.Cancel = true; }}実行結果
左側の DataGridView では AllowUserToDeleteRows プロパティでの制御により、一律でユーザーによる行の削除ができません。右側の DataGridView では、確認ダイアログで OK を選択した場合のみ、行を削除できます。

サンプルアプリケーション
DataGridView_AllowUserToDeleteRows_CS.zip
※ このサンプルアプリケーションは、.NET 9 で作成されています。
💬 コメント