Why are you putting an event handler inside an event handler?
Just put in there what you want it to do.
Private Sub DataGridView1_SelectionChanged(ByVal sender As Object, ByVal e As
dgvCaseLst1.Rows(Pi_CaseIndex).Selected = True
MessageBox.Show("selection changed trigger")
End Sub
you are trying to do to many things
first you are setting the row count to 0
then you are setting it to 22
then you are clearing the selections.
I'm not even sure what the next one is supposed to do.
You have to make up your mind what you want it to do.
The way it was it was doing all of 4 them thats why you got 4 triggers.
If you need it to do different things use a if /else or a case statement.
for me the selected change is for doing something with the data in the row/cell that was selected.
But here you appear to be trying to change another datagrid view when the change event is fired in the first one ???