按顺序执行控件

时间:2012-07-04 21:16:19

标签: vb.net

我正在使用表单的文本字段创建XML文件。当我使用For Each循环遍历它们时:

For each Ctrl in Me.Controls 
    'dosomething
Next

它没有按顺序排列;也就是说,它首先将TextBox置于中间,然后是第一个,然后是另一个,它会继续这样。

有没有办法可以按顺序获取值?

3 个答案:

答案 0 :(得分:7)

Me.Controls按照创建顺序包含控件。

要更改它,请选择第一个控件(在设计器中),单击“发送到后面”,然后重复。

答案 1 :(得分:7)

您可以按TabIndex订购:

Dim allTextBoxes = From txt In Me.Controls.OfType(Of TextBox)()
                   Order By txt.TabIndex

另一种方法是按位置订购:

allTextBoxes = From txt In Me.Controls.OfType(Of TextBox)()
               Order By txt.Location.Y, txt.Location.X


For Each txt In allTextBoxes
    '  ...
Next

答案 2 :(得分:0)

这可能适合你。不是VB人,但这是我尝试按照他们的位置从上到下排序控件。

... Me.Controls.OrderBy(Function(c) c.Location.Y)