Direi che forse è meglio che ti vai a studiare BindingSOurce, DataTable, persistenza dei Dati nell' UI e quant' altro ...
Senza cattiveria ma quel codice li' ... mi spaventa e mi stupisce che funzioni ...

Poi dove hai letto di usare quegli eventi per la selezione di una riga?
Si usa un FullRowSelect, si associa una persistenza a livello di classe non un BindingSOurce ... e sopratutto non si cancellano i dati dell' oggetto che per associazione ByVal popola la DataGridView ...

Ti ripeto è un consiglio non un insulto ne tantomeno un' offesa.