2012-04-06 13 views
0

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

私は行を削除することができていますが、私は私のコントロールは、以下の方法に来doesnotを確認していない:ユーザーがクリックするボタンを削除するときように私は私のコードで書かれたものはショーわからない

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; 
} 

制御は上記の論理になる。

提案がありますか?

ありがとうございました。

+0

「私のコントロールがメソッドに来ていない」コントロールが上のロジックに来ない。コントロールはどういう意味ですか? – nawfal

+0

上記のコードが実行されているかわかりませんか? –

+0

つまり、行は削除されますが、「選択した記号を削除してもよろしいですか?」という質問は表示されません。 –

答えて

2

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

public Form1() 
{ 
    InitializeComponents(); 
    dataGridView1.UserDeletingRow += dataGridView1_UserDeletingRow; 
} 
+0

+1このコメントの+1。 –

2

イベントを確認しますが enter image description here

を登録し、イベントを実装している:

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; 
    } 
} 
3

私もこの問題を抱えていました。イベントハンドラがバインドされて呼び出されましたが、[選択済み]コレクションは空でした。

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

これが役に立ちます。

関連する問題