2011-01-13 126 views
4

我在Windows窗体中有一个选项卡控件。除了下面的例子,它工作得很好。当我选择tabpage2时,tabpage1上的所有控件都将其visible属性返回为FALSE,因为它们都设置为visible = false,所以它们实际上是不真实的。不可见的tabpage(选项卡控件)上的控件返回Visible = false

我想这是因为tabpage1设置为visible = false所以所有的子控件继承FALSE。

当然,如果选择了tabpage1,则所有控件都会返回正确的visible属性值。

必须有解决办法。有没有人有办法解决吗?

+1

为什么你想要一个解决方法呢?这些控件在其父标签页不可见时不可见。这是和其他窗口相同的规则。也许如果你告诉我们你试图完成什么,我们可以提出其他解决方案。 – 2011-01-13 16:52:09

+0

如果控件的“visible”属性设置为false,那么当检查该属性时它自然会返回false。我误读了吗? – JYelton 2011-01-13 16:53:03

+0

当然...它的一个标签控件有几个tabpages ..每个tabpages有一些控件在那里..我需要检查一个ALERT面板,我有可见..如果它然后我失败了验证程序我运行...但我检查警报面板的可见属性,当tabpage2打开,并在其tabpage1 ...如果这是有道理的 – Martin 2011-01-13 16:54:17

回答

1

由于面板的Visible属性的行为不符合您的期望,请尝试将面板的Tag属性设置为某种或某些其他属性,然后使用该属性确定是否验证失败。

0

制作一个小项目,以确认这一点,如果你检查当前选择,它会返回false 选项卡页面上的任何控制的Visible财产,因为控制是可见。

如果您试图确定用户当前正在查看哪个标签页,最好检查TabControl的SelectedTabSelectedIndex属性。

11

Visible属性有点特别,它的getter不会返回分配的值。它告诉你,如果控制是实际上可见。如果将它放在未选中的标签页上,则不是。这是设计。

不支持获取实际的“打算可见”状态。你会从GetState(2)中获得它,但这是一种内部方法。如果你真的绝望,那么你可以使用反射。但正确的方法是自己跟踪它。