0

datagridviewから行を削除しようとしていますが、ユーザーが任意の行を選択して[削除]ボタンをクリックすると、行を削除するかどうかをユーザーに尋ねる必要がありますか?

行を削除することはできますが、コントロールが以下のメソッドに到達しないかどうかわかりません。

private void dataGridView1_UserDeletingRow(object sender,DataGridViewRowCancelEventArgs e)
{
    DialogResult usersChoice =
    MessageBox.Show("Are you sure you want to delete the selected signs?\r\n" + dataGridView1.SelectedRows.Count + " signs will be deleted!", "Signs", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);

    // cancel the delete event
    if (usersChoice == DialogResult.Cancel)
        e.Cancel = true;
}

ユーザーが削除ボタンをクリックしたときにコントロールが上記のロジックに到達するように、コードにどのようなショーを記述しているかわかりません。

助言がありますか?

ありがとう。

4

3 に答える 3

3

私もこの問題を抱えていました。イベントハンドラーがバインドされて呼び出されましたが、「Selected」コレクションは空でした。

これを修正するには、グリッドのSelectionModeを「FullRowSelect」に変更する必要がありました。

お役に立てれば。

于 2013-05-21T18:50:17.353 に答える
2

イベントが登録されていることを確認します ここに画像の説明を入力してください

そして、イベントを実装します。

private void DataGridView1_UserDeletingRow(object sender, System.Windows.Forms.DataGridViewRowCancelEventArgs e)
{
   DialogResult response = MessageBox.Show("Are you sure you want to delete this row?", "Delete row?", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);
   if ((response == DialogResult.No))
   {
      e.Cancel = true;
   }
}
于 2012-04-06T14:27:20.680 に答える
2

このイベントには、のコンストラクターで登録できますForm

例えば:

public Form1()
{
   InitializeComponents();
   dataGridView1.UserDeletingRow += dataGridView1_UserDeletingRow;
}
于 2012-04-06T14:24:32.940 に答える