I working on application with DataGridView.
It contains several tabs, each tab includes a DataGridView of some parameters. I need implement Admin and User modes, where each grid table should hide some rows according to the mode.
I have a problem with the hiding: on some tabs the hiding work perfect on other doesn't work absolutely.
I did some tests: hid all rows of problematic grid, printed Visible values after delay.
usedgrid.CurrentCell = null.
I didn't found any mistake that point to the reason of the problem. I use the same method for all:
private void HideParameter(DataGridView grid, string ParamName) { CurrencyManager CM = (CurrencyManager)BindingContext[grid.DataSource]; CM.SuspendBinding(); for (int i = 0; i < grid.Rows.Count; i++) { string Val = grid.Rows[i].Cells[0].Value.ToString(); if (Val.Contains(ParamName)) { //grid.CurrentCell = null; grid.Rows[i].Visible = false; } } CM.ResumeBinding(); } Grid binding:
void BindGridWithDataSource(DataTable dt, DataGridView grid) { BindingSource bs = new BindingSource(); bs.DataSource = dt; grid.DataSource = bs; } 
CurrencyManagerdirectly. Bind via aBindingSourceand then access everything related to data binding through it, including theSuspendBindingmethod, should you actually need it.DataTablebound to aBindingSource. Just set theFilterproperty of theBindingSourceappropriately and that will handle the filtering.