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

时间:2014-03-24 11:13:17

标签: c# .net winforms datagridview

在开始追捕我的Visible False / True问题之前:

  

设置非自动列的Visible属性的稳定性如何   一个WinForms DataGridView?

我在WinForms中遇到过很多关于奇怪文物的问题(例如,在他们现有的多年后,在设计时摆弄FlowLayoutPanel和TableLayoutPanel仍然让Visual Studio设计师感到不安,改变了{{1在ForeColor上总是有效,等等,所以我习惯于质疑这个框架。

在我的特定情况下,我在TextBox和{backgroundWorker_RunWorkerCompleted中设置DataGridView上的最后两列的Visible属性(设计时的所有列,绑定数据是内存对象的集合) {1}}事件。

观察:

  1. myCheckBox_CheckedChanged中,设置backgroundWorker_RunWorkerCompleted隐藏了该列,但稍后设置Visible = False并未显示该列
  2. Visible = True中,设置myCheckBox_CheckedChanged完全没有效果(不隐藏或显示)
  3. 在深入挖掘这个问题并获得Short, Self Contained, Correct Example之前:这通常会有多稳定?

1 个答案:

答案 0 :(得分:1)

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

如果CheckBox绑定到某些基础数据源,CheckBox的可见性就会发生,这可能会阻止此类更新。但是,做

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

应该没问题。我希望这会有所帮助。