После нескольких экспериментов вместе с моим коллегой мы нашли решение:
, чтобы выбрать текущую TabPage в TabControl, прежде чем скрыть строки DataGridView:
...
Tab.SelectedIndex = tabIndex;
...
HideSomeRows(ref grid);
Пожалуйста, посмотрите ту же программу, которая изменилась для корректной работы с дополнением, подписанной
/*!*/
.
DataFridView LoadDataToTab(ref DataTable dt, TabPage tab, TabControl Tab/*!*/, int tabIndex/*!*/)
{
DataGridView grid = new DataGridView();
BindingSource source = new BindingSource();
source.DataSource = dt;
grid.DataSource = source;
tab.Control.Add(grid);
// Now all binding is done;
// This TabControl Tab has inside TabPage tab
Tab.SelectedIndex = tabIndex; /*!*/
// Now I need to hide some rows in TabPage-s:
HideSomeRows(ref grid);
return grid;
}
void HideSomeRows(ref DataGridView grid)
{
for (int i = 0; i < grid.Rows.Count; i++)
{
string val = grid.Rows[i].Cells[0].Value.ToString();
// SomeString is some "xyz" stirng
if( val == SomeString ||
val == SomeOtherString)
{
grid.Rows[i].Visible = false;
}
}
}