我创建了一个程序,我已经创建了各种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被添加到新位置。
任何人都可以告诉我如何创建一个控件数组,但是让它在创建时保留所有属性而不是允许它们更改?
我希望我已经解释得这么好了。
非常感谢任何帮助。