I want to select a group of rows in datagridview. There is a dedicated simple function called
void SelectAdjacentRows(int i)
{
if (i == -1)
return;
dgw.Rows[i].Selected = true;
if (i < dgw.Rows.Count - 1)
dgw.Rows[i + 1].Selected = true;
}
It is being invoked from CellClick event and rows gets selected correctly. But when I use Up/Down keys to navigate through grid view the selection is lost. I tried to use RowStateChanged event but then I ran into infinite loop even though I removed the event subscription like this:
private void dataGridView1_RowStateChanged(object sender, DataGridViewRowStateChangedEventArgs e)
{
if (e.StateChanged == DataGridViewElementStates.Selected)
{
dgw.RowStateChanged -= dataGridView1_RowStateChanged;
SelectAdjacentRows(e.Row.Index);
dgw.RowStateChanged += dataGridView1_RowStateChanged;
}
}
How to make a selection when navigating using Up/Down keys?
I haven’t had a whole lot of luck dealing with the *State events on a DataGridView. I would suggest looking into the SelectionChanged Event.