Menu

DataGridView.Visible属性保持为false

已加入
2020年5月9日
留言内容
9
编程经验
10+
在这个成熟的C#项目中,某个网格视图的DataGridView.Visible属性始终保持为false。

即使在尝试以编程方式将值设置为"true".

最初设置了DataGridView.Visible属性"true"在Designer中,程序中没有任何内容将其设置为"false"

最近,非工作网格视图已添加到项目中,并以许多工作网格视图为模型。网格视图的所有主要区别在于列和数据源。

我还设置了一个VisibleChange事件作为测试,它是在属性的第一个设置为"true"。再次保持属性值"false"尝试设置属性之前和之后"true".

在运行时捕获的以下属性中可能有些线索,这些线索与工作网格视图的线索不同。

CanFocus false
CanSelect false
包含焦点错误
Created false
Focused false
Visible false

在工作网格视图中,所有这些属性都是"true".

我认为其中大多数是副作用,而不是导致无效网格视图的原因。

有趣的是"Created" property.

我已经单步执行了网格视图的调用代码,并且所有代码均无例外地执行。

任何想法,对此表示赞赏。我尤其对"Created" property.

谢谢,
杰拉尔德·克里斯蒂安

ps

我听说Visible控件的操作可以依赖于父对象的Visible属性。
但是,父对象是一个TabPage,它没有.Visible属性,至少没有一个在Designer中公开。
无论如何,所有网格视图都具有TabPage父级。
 

金西尼

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
3,563
地点
悉尼,澳大利亚
编程经验
10+
它在一个事实 标签页 是线索。这 TabControl 设计成使 标签页 在那之前不要被创造 标签页 被选中。第一个控件 标签页 将与其余表单一起正常创建,但其他控件 标签页 在选择这些页面之前,不会创建这些页面。这是专门为了使在选项卡中具有很多控件的表单在加载时不会滞后。理想情况下,在选择选项卡之前,不要尝试访问任何控件。如果需要,您可以在 所示 事件处理程序以选择每个 标签页 反过来。我已经做过一些测试,试图找到一种替代方法来强制创建控件,但是还没有找到。我确信必须有一个,但还没有时间进行真正的全面测试。
 
Last edited:

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,605
地点
弗吉尼亚州切萨皮克
编程经验
10+
现在,其他人发现了WinForms TabControl的噩梦。 WinForms TabControl是Win32公共控件中Win95 Tab控件周围设计不良的包装器。它可以完成大约80%的事情,但是有一些漏洞。问题的另一部分是DataGridView是作为现代.NET Framework WinForms控件从头开始编写的。因此拥有它"living"在本机Win32公共控件中,其WinForms包装器并不完全像真正的WinForms控件那样导致问题。

在.NET Framework 2.0天内,我花了3个月的时间与它作斗争,试图对其进行自定义以使其适用于基于选项卡的UI(许多选项卡包含DataGridViews)。根据我的经验,我对可见性没有任何问题,但是可以绘画和重绘。我发现Spy ++是尝试解决问题的非常有用的工具。
 
最佳 底部