記事内に広告が含まれています。

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 を選択した場合のみ、行を削除できます。

サンプルアプリケーション

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

-Windows Forms