У меня есть DataGridView, связанный с источником данных, который на основе пользовательского ввода скрывает свои столбцы в событии DataBindingComplete.Он работает нормально, за исключением случаев, когда все столбцы должны быть скрыты, всегда отображается последний скрытый.Во время отладки я вижу, что для столбца установлено значение visible = false, но это не имеет никакого эффекта.
У меня есть обходной путь, который отлично работает, вызывая таймер в событии DataBindingComplete и вызывая метод HideColumns ()но я ищу лучшее решение.
private void CoverageDGV_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
{
var datagridview = sender as DataGridView;
datagridview.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.TopLeft;
datagridview.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
datagridview.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
datagridview.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;
datagridview.RowHeadersVisible = true;
datagridview.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.AutoSizeToDisplayedHeaders;
datagridview.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize;
datagridview.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
HideColumns(datagridview);
//timer1.Enabled = true; // This works fine
}
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Enabled = false;
HideColumns(ShipCoverageDGV);
}
private void HideColumns(DataGridView datagridview)
{
for (int i = 0; i < datagridview.Columns.Count; i++)
{
var column = datagridview.Columns[i];
var itemType = [USER INPUT];
if (itemType == Glossary.IndirectCOType)
column.Visible = IndirectCOCheckBox.Checked;
else if (itemType == Glossary.NotAllocatedType)
column.Visible = NotAllocatedCheckBox.Checked;
else
column.Visible = DirectCOCheckBox.Checked;
}
}
Мой вопрос: есть ли решение, как скрыть все столбцы?