我有一个DataGridView
,我有选择地(迭代地)隐藏行,使用row.Visible
:
void UpdateMessageWindow()
{
MessageDataGridView.CurrentCell = null;
foreach (DataGridViewRow row in MessageDataGridView.Rows)
{
row.Visible = DisplayedLevels.HasFlag((MessageLevel)row.Cells[3].Value);
}
}
我遇到了一个问题,即在添加行后,它们不会被重新绘制,直到您单击单元格(重新绘制单击的单元格)、按下一个键或隐藏窗口。如果您将鼠标移到 DGV 上,您可以看到它们存在,因为光标发生了变化。
我很确定我已经在 DataGridView 上尝试了所有相关探测方法的组合,但没有任何帮助。
编辑:
我已将其修改为使用 BindingSource.Filter,通过在 DataSet 表中添加“可见”列、设置messageBindingSource.Filter = "Visible"
并将 UpdateOutput 重写为
void UpdateOutputWindow()
{
foreach (JobDataSet.MessagesRow row in _dataSet.Messages)
{
row.Visible = DisplayedLevels.HasFlag(row.Level);
}
}
但它仍然显示相同的行为。