DataGridView没有被重新绘制
本文关键字:绘制 新绘制 DataGridView | 更新日期: 2023-09-27 18:01:19
我有一个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。过滤器,通过在DataSet Table中添加一个"Visible"列,设置messageBindingSource.Filter = "Visible"
,并将UpdateOutput重写为
void UpdateOutputWindow()
{
foreach (JobDataSet.MessagesRow row in _dataSet.Messages)
{
row.Visible = DisplayedLevels.HasFlag(row.Level);
}
}
但是它仍然显示相同的行为
尝试使用:
聚焦数据视图MessageDataGridView.Focus();
我发现答案是为DataTable.RowChanged
事件添加处理程序:
_dataSet.Messages.RowChanged += delegate
{
MessageDataGridView.Invalidate();
MessageDataGridView.Update();
};