【问题标题】:How stable is setting the Visible property of non-automatic columns in a WinForms DataGridView?在 WinForms DataGridView 中设置非自动列的 Visible 属性有多稳定?
【发布时间】:2014-03-24 11:13:16
【问题描述】:

在开始寻找我的可见假/真问题之前:

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

我已经在 WinForms 中遇到了很多奇怪的人工制品问题(例如,在它们存在多年之后,在设计时摆弄 FlowLayoutPanel 和 TableLayoutPanel 仍然让 Visual Studio 设计师感到不安,将 ForeColor 更改为TextBox 并不总是有效,等等)所以我习惯于质疑框架。

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

观察:

  1. backgroundWorker_RunWorkerCompleted 中,设置Visible = False 会隐藏该列,但稍后设置Visible = True 不会显示它
  2. myCheckBox_CheckedChanged中,设置Visible = myCheckBox.Checked完全没有效果(不隐藏也不显示)

在深入研究并获得Short, Self Contained, Correct Example 之前:这通常应该有多稳定?

【问题讨论】:

    标签: c# .net winforms datagridview


    【解决方案1】:

    我对此的个人经验是,绑定DataGridViews 等控件的可见性可能是喜怒无常的。我会使用Update() 方法,这可能会解决可见性问题。未能在表单上显示this.Update(),并最终使用this.Refresh() 刷新完整表单。

    CheckBoxs 的可见性而言,如果CheckBox 绑定到某个底层数据源,这可能会阻止此类更新。但是,做

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

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

    【讨论】:

    • 我要深入挖掘一些。感谢您的提示。
    • 你有没有使用Update()/Refresh()的运气?
    • 还没有。我现在正在进行另一个项目。
    猜你喜欢
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 2016-04-26
    • 2011-10-04
    • 1970-01-01
    • 2010-09-28
    • 1970-01-01
    相关资源
    最近更新 更多