2012-04-06 144 views
0

我想從datagridview中刪除行,當用戶選擇任何行並單擊刪除按鈕時,它應該詢問用戶是否要刪除行?datagridview在C#中刪除行?

我能刪除行,但我不知道我的控制亙古不來的方法如下:

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 2012-04-06 14:12:48

+0

您不確定上述代碼是否正在執行? – 2012-04-06 14:13:04

+0

我的意思是......行被刪除,但它永遠不會詢問用戶「你確定要刪除選定的標誌嗎?\ r \ n」 – 2012-04-06 14:13:58

回答

2

您可以在Form的構造函數中註冊此事件。

例如:

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

+1此評論。 – 2012-04-06 14:26:23

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

我是有這個問題了。事件處理程序被綁定並被調用,但「Selected」集合爲空。

要解決這個問題,我不得不將網格的SelectionMode更改爲「FullRowSelect」。

希望這會有所幫助。