在WinForms DataGridView中设置非自动列的可见属性有多稳定?
本文关键字:属性 DataGridView WinForms 设置 | 更新日期: 2023-09-27 17:52:48
在开始寻找我的Visible False/True问题之前:
中的非自动列的可见属性设置有多稳定一个WinForms DataGridView?
我已经有足够的问题与奇怪的人工在WinForms(例如,经过多年的存在,摆弄周围的FlowLayoutPanel和TableLayoutPanel在设计时仍然得到Visual Studio设计师的不安,改变ForeColor
上的TextBox
并不总是工作等),所以我习惯于质疑框架。
在我的具体情况下,我在backgroundWorker_RunWorkerCompleted
和myCheckBox_CheckedChanged
事件中设置了DataGridView上最后两列的可见属性(设计时的所有列,绑定的数据是内存对象的集合)。
观察:
- 在
backgroundWorker_RunWorkerCompleted
中,设置Visible = False
隐藏列,但随后设置Visible = True
不显示列 - 在
myCheckBox_CheckedChanged
中,设置Visible = myCheckBox.Checked
没有任何作用(不隐藏或显示)
在深入研究这个问题,并得到一个简短的,独立的,正确的例子之前:这通常应该有多稳定?
我个人的经验是,像bound DataGridView
s这样的控件的可见性可能是不稳定的。我会使用Update()
方法,这可能会解决可见性问题。如果失败,在表单上使用this.Update()
,并最终使用this.Refresh()
刷新完整的表单。
如果CheckBox
绑定到一些底层数据源,那么CheckBox
的可见性可能会阻止这样的更新。然而,做
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
checkBox.Visible = checkBox.Checked;
}
应该没问题。