在WinForms DataGridView中设置非自动列的可见属性有多稳定?

本文关键字:属性 DataGridView WinForms 设置 | 更新日期: 2023-09-27 17:52:48

在开始寻找我的Visible False/True问题之前:

中的非自动列的可见属性设置有多稳定一个WinForms DataGridView?

我已经有足够的问题与奇怪的人工在WinForms(例如,经过多年的存在,摆弄周围的FlowLayoutPanel和TableLayoutPanel在设计时仍然得到Visual Studio设计师的不安,改变ForeColor上的TextBox并不总是工作等),所以我习惯于质疑框架。

在我的具体情况下,我在backgroundWorker_RunWorkerCompletedmyCheckBox_CheckedChanged事件中设置了DataGridView上最后两列的可见属性(设计时的所有列,绑定的数据是内存对象的集合)。

观察:

  1. backgroundWorker_RunWorkerCompleted中,设置Visible = False隐藏列,但随后设置Visible = True不显示列
  2. myCheckBox_CheckedChanged中,设置Visible = myCheckBox.Checked没有任何作用(不隐藏或显示)

在深入研究这个问题,并得到一个简短的,独立的,正确的例子之前:这通常应该有多稳定?

在WinForms DataGridView中设置非自动列的可见属性有多稳定?

我个人的经验是,像bound DataGridViews这样的控件的可见性可能是不稳定的。我会使用Update()方法,这可能会解决可见性问题。如果失败,在表单上使用this.Update(),并最终使用this.Refresh()刷新完整的表单。

如果CheckBox绑定到一些底层数据源,那么CheckBox的可见性可能会阻止这样的更新。然而,做

private void checkBox_CheckedChanged(object sender, EventArgs e)
{
    checkBox.Visible = checkBox.Checked;
}

应该没问题。