注意:DataGridViewコントロールは、.NET Framework 2.0で新しく追加されました。
通常はDataGridView内の行をDELETEキーで削除することができますが、DataGridViewコントロールのAllowUserToDeleteRowsプロパティをFalseとすることにより、ユーザーが行を削除することができなくなります。
'DataGridView1の行をユーザーが削除できないようにする DataGridView1.AllowUserToDeleteRows = False
//DataGridView1の行をユーザーが削除できないようにする DataGridView1.AllowUserToDeleteRows = false;
ただしこのようにしても、DataGridViewRowCollection.Removeメソッドなどで行を削除することはできます。
補足:上記のようなコードを書く方法以外に、Visual Studioのスマートタグで、「削除を有効にする」のチェックを外す方法があります。
補足:「DataGridの一番下の新しい行(*行)が表示されないようにする」で紹介しているような、DataView.AllowDeleteプロパティをFalseにする方法でもユーザーの行削除を禁止できます。
ユーザーが行を削除しようとしたとき、DataGridView.UserDeletingRowイベントが発生します。ここで削除しても構わないか判断して、条件により削除をキャンセルすることができます。
行を削除する前にユーザーに確認する例を以下に示します。
'DataGridView1のUserDeletingRowイベントハンドラ Private Sub DataGridView1_UserDeletingRow(ByVal sender As Object, _ ByVal e As DataGridViewRowCancelEventArgs) _ Handles DataGridView1.UserDeletingRow '削除するかユーザーに確認する If MessageBox.Show("この行を削除しますか?", "削除の確認", _ MessageBoxButtons.OKCancel, MessageBoxIcon.Question) <> _ Windows.Forms.DialogResult.OK Then e.Cancel = True End If End Sub
//DataGridView1のUserDeletingRowイベントハンドラ private void DataGridView1_UserDeletingRow( object sender, DataGridViewRowCancelEventArgs e) { //削除するかユーザーに確認する if (MessageBox.Show("この行を削除しますか?", "削除の確認", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) { e.Cancel = true; } }