2

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

For each Ctrl in Me.Controls 
    'dosomething
Next

它没有按顺序排列它们;也就是说,它首先TextBox在中间,然后是第一个,然后是另一个,然后一直这样。

有没有办法让我按顺序取值?

4

3 回答 3

7

Me.Controls包含按创建顺序排列的控件。

要更改它,请选择第一个控件(在设计器中),单击 Send to Back,然后重复。

于 2012-07-04T21:19:34.917 回答
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
于 2012-07-04T21:27:59.190 回答
0

这可能对你有用。不是 VB 人,但这是我尝试按位置从上到下对控件进行排序。

... Me.Controls.OrderBy(Function(c) c.Location.Y)
于 2012-07-04T21:24:09.783 回答