2016-06-10 3 views
0

У меня есть DataGridView в форме и у меня есть следующий код:C# DataGridView как программно сгореть выбранное событие

//Scroll to the last row 
      gridStore.FirstDisplayedScrollingRowIndex = gridStore.RowCount - 1; 
      // select new row 
      gridStore.Rows[gridStore.Rows.Count - 1].Selected = true; 

Я понимаю, что .selected doenst огня события SelectionChange:

private void gridStore_SelectionChanged(object sender, EventArgs e) 
     { 

     } 

И мне нужно запустить это событие, когда строка выбирается программно.

Любые подсказки?

+0

Попробуйте установить dgv.CurrentCell или вызовите событие gridStore_SelectionChanged вручную после вашего кода? – Niklas

ответ

1

Как вы правильно поняли, когда SelectMode набор для FullRowSelectSelectionChanged событие не срабатывает.

У вас есть два способа решения этой проблемы.

Вариант 1

Раздельная логики вы хотели бы выполнить общее между gridStore_SelectionChanged и при обновлении выбора в явном виде и вызвать этот метод в обеих случаях.

private void DoSomething() 
{ 

} 

private void gridStore_SelectionChanged(object sender, EventArgs e) 
{ 
    ... 
    DoSomething(); 
} 

и

gridStore.FirstDisplayedScrollingRowIndex = gridStore.RowCount - 1; 
// select new row 
gridStore.Rows[gridStore.Rows.Count - 1].Selected = true; 

DoSomething(); 

Вариант 2:

Явное вы инициировать событие после того, как сделать выбор (не предпочтительный способ, но работает).

gridStore.FirstDisplayedScrollingRowIndex = gridStore.RowCount - 1; 
// select new row 
gridStore.Rows[gridStore.Rows.Count - 1].Selected = true; 
gridStore_SelectionChanged(this, new EventArgs()) 
Смежные вопросы