2012-04-06 3 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

+0

Вы не знаете, выполняется ли приведенный выше код? –

+0

Я имею в виду ... строки удаляются, но он никогда не спрашивает пользователя: «Вы уверены, что хотите удалить выбранные знаки? \ R \ n» « –

ответ

2

Вы можете зарегистрироваться для этого события в Конструкторе вашего Form.

Например:

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

+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».

Надеюсь, это поможет.