VB.Net控件数组

时间:2015-03-11 16:58:43

标签: arrays vb.net controls

我创建了一个程序,我已经创建了各种UserControl。

在我的主窗体上,我有一个按钮,当第一次按下时,它会在窗体中创建一个包含所有控件的数组。 在此之后,它会添加控件,删除控件,更改属性等。但是直到Button_Click子结束之前才会再次触摸数组。

此时,根据我最后输入的检查结果,我希望删除所有控件,然后将数组中的所有控件重新添加到表单中。

我可以很容易地做到这一点,但是当我从数组的内容中添加控件时,它会在我最初创建数组后添加属性。

例如, 我的表单有Button1,Button2和Button3。 在Button1的click事件中,创建了一个名为Controls()的数组

    Dim _Controls() as Control
    Dim _Index as Long = -1

    For Each Ctl as Control In Me.Controls
        _Index += 1
        _Controls(_Index) = Ctl
    Next Ctl

创建之后,我以编程方式添加其他几个控件(以Button4,Button5和Button6为例),更改Button2和Button3的文本和位置,然后执行返回布尔值的检查。

如果布尔为真,我退出sub,如果为false,那么我想恢复一切,就像它使用我创建的数组一样。

    If _Check Then
        Exit Sub
    Else
        For Each Ctl As Control In Me.Controls
            _OldIndex += 1
            _OldControls(_OldIndex) = Ctl
        Next Ctl

        For Each Ctl As Control In _OldControls
            Me.Controls.Remove(Ctl)
        Next Ctl

        For Each Ctl As Control In _Controls
            Me.Controls.Add(Ctl)
        Next Ctl
    End If

这可以成功添加所有原始控件(在我们的示例中,Button1,Button2和Button3),但属性是我完成所有更改后的控件属性。 因此,在我们的示例中,Button1被添加到正确的位置,Button2和Button3被添加到新位置。

任何人都可以告诉我如何创建一个控件数组,但是让它在创建时保留所有属性而不是允许它们更改?

我希望我已经解释得这么好了。

非常感谢任何帮助。

0 个答案:

没有答案