Vb.net 在窗体中运行所有控件

Vb.net 在窗体中运行所有控件,vb.net,Vb.net,我有一个表单,我正在运行该表单中的所有控件。 我的代码很好,可以获取所有控件及其所有属性 例如,我有一个TabControl,每个tabPage中有2个TabPages和2个文本框。 问题是,对于未选中的tabPage,TextBox的visible属性为False,尽管我已将其设置为True。 我尝试使用Control.Select和Control.Focus解决此问题,但Visible仍然为False: Private Sub createXML(ByVal cnt As Control

我有一个表单,我正在运行该表单中的所有控件。 我的代码很好,可以获取所有控件及其所有属性

例如,我有一个TabControl,每个tabPage中有2个TabPages和2个文本框。
问题是,对于未选中的tabPage,TextBox的visible属性为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
有什么想法吗?
请注意,我不知道每次都要运行哪些控件,在本例中,您的问题是TabControl会将所有内容设置为不可见,除非它们出现在当前选定的tabpage中。当您更改选项卡时,控件将设置为可见,而以前的控件将消失。那么tabcontrol如何跟踪手动设置为visible false的控件,以便在更改选项卡时不会亮起?可见属性并不是真正基于布尔值。对于我们程序员来说,这只是一种简单的解释方法。无论你看到或不看到,都没有需要记住的规则,也没有要搞乱的设置。可见或不简单

那么如何处理你的问题呢。基本上,当我看到这一点时,我的第一个想法是,你想创建一个“打开程序,使它看起来与关闭时一样”的函数。这当然是目前无法正常工作的,因为您的解析器可能将所有内容都设置为visible=false,这在前面所述的意思是永远不可见。因此,加载时选项卡控件页面更改后不显示

因此,解决方案: 1.向选项卡控件中的控件添加标记。这样,您可以在保存时查找标记。如果存在,请将visible属性设置为true。(以后维护时易于理解)
2.使用反射获取实际可见状态。查看SO线程并阅读有关反射的内容:(在将来维护时不太容易理解)

感谢您的回答。我将采用第二种解决方案