运行表单中的所有控件

时间:2012-10-29 10:17:33

标签: vb.net

我有一个表单,我正在运行该表单中的所有控件。 我的代码没问题,并且获得了所有控件及其所有属性。

例如,我在每个tabPage中都有一个带有2个TabPages和2个文本框的TabControl 问题是,对于未选中的tabPage,文本框的属性可见为False,尽管我已将其设置为True。 我尝试使用Control.Select和Control.Focus解决此问题,但Visible仍为False:

  Private Sub createXML(ByVal cnt As Control, ByVal elem As XElement)
    Try

        cnt.Select()
        cnt.Focus()
        Select Case cnt.Controls.Count
            Case Is = 0
               'Code here to write XElement to an XDocument
                'Check Controls properties
            Case Is > 0
                For Each childCnt As Control In cnt.Controls
                    childCnt.Select()
                    childCnt.Focus()

                    Dim childElem As New XElement(childCnt.GetType.ToString)
                    Select Case childCnt.Controls.Count
                        Case Is = 0
                            'Code here to write XElement to an XDocument
                            'Check Controls properties
                        Case Is > 0
                            createXML(childCnt, childElem)
                       End Select
                Next
        End Select

有什么想法吗? 请注意,我不知道每次都要运行什么控件

1 个答案:

答案 0 :(得分:1)

在这种情况下,您的问题是TabControl将所有内容设置为invisble,除非它们出现在当前选定的标签页中。当您更改选项卡时,控件将设置为可见,之前的控件将消失。那么tabcontrol如何跟踪手动设置为可见false的控件,以便在更改选项卡时它不会亮起?那么可见属性并不是真的基于布尔值。它只是为我们的程序员解释它的一种简单方法。要么你看到它,要么你没看到,没有规则要记住或设置搞乱。可见或不简单。

那么如何解决您的问题。基本上,当我看到这个时,我首先想到的是你要创建一个“打开程序,使其看起来与关闭时一样”功能。当然,由于您的解析器可能将所有内容设置为visible = false,因此当前无法正常工作,这在之前的声明中意味着永远不可见。因此,加载后Tab控制页面更改后不会显示。

所以解决方案: 1.将标签添加到选项卡控件中的控件。这样,您可以在保存时查找标记。如果它在那里,将visible属性设置为true。 (在将来维护时很容易理解) 2.使用反射来获得实际的可见状态。查看SO线程并阅读有关反射:Using control.Visible returns False if it's on a tab page that is not selected(将来维护时不太容易理解)