在开始追捕我的Visible False / True问题之前:
设置非自动列的Visible属性的稳定性如何 一个WinForms DataGridView?
我在WinForms中遇到过很多关于奇怪文物的问题(例如,在他们现有的多年后,在设计时摆弄FlowLayoutPanel和TableLayoutPanel仍然让Visual Studio设计师感到不安,改变了{{1在ForeColor
上总是有效,等等,所以我习惯于质疑这个框架。
在我的特定情况下,我在TextBox
和{backgroundWorker_RunWorkerCompleted
中设置DataGridView上的最后两列的Visible属性(设计时的所有列,绑定数据是内存对象的集合) {1}}事件。
观察:
myCheckBox_CheckedChanged
中,设置backgroundWorker_RunWorkerCompleted
隐藏了该列,但稍后设置Visible = False
并未显示该列Visible = True
中,设置myCheckBox_CheckedChanged
完全没有效果(不隐藏或显示)在深入挖掘这个问题并获得Short, Self Contained, Correct Example之前:这通常会有多稳定?
答案 0 :(得分:1)
我个人的经验是,绑定DataGridView
的控件的可见性可能是不稳定的。我会使用Update()
方法,这可能会解决可见性问题。在表单上失败this.Update()
并最终使用this.Refresh()
刷新完整表单。
如果CheckBox
绑定到某些基础数据源,CheckBox
的可见性就会发生,这可能会阻止此类更新。但是,做
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
checkBox.Visible = checkBox.Checked;
}
应该没问题。我希望这会有所帮助。