在循环的每次迭代中引用不同的控件

时间:2015-04-28 17:37:53

标签: vb.net winforms

在我的程序中,我有24个文本框供用户用于输入。我想将每个文本框的内容分配给数组的索引。有没有办法在循环中执行此操作而不必每次都输出strItems(0) = MainForm.txtEntry1.text?这是用Visual Basic编写的。

我正在尝试做的一个例子:

    For intCount = 0 to (strItems.length - 1)
      strItems(intCount) = txtEntry[intCount + 1]
    Next

2 个答案:

答案 0 :(得分:1)

如果您为所有文本框名称添加前缀(例如textBoxArray1),则可以遍历表单上的所有文本框并进行相应处理。像:

SECTION .data

text:  db  "Just some text"  ;LENGTH = 14.
color: db 181          
x:     db 0
y:     db 0

SECTION .text

global main
main:

  mov  bp, text ;STRING TO DISPLAY.
  mov  cx, 14          ;STRING LENGTH.
  mov  [x], byte 50    
  mov  [y], byte 20
  call color_string

;FINISH PROGRAM.
  mov  ax,4c00h
  int  21h

;----------------------------------------------     
;PARAMETERS : BP = OFFSET OF STRING TO DISPLAY.  
;             CX = STRING LENGTH.
;             COLOR = VARIABLE WITH COLOR (0..255).
;             X,Y   = VARIABLES WITH COORDINATES.

color_string:

  mov  ax, ds
  mov  es, ax         ;ES SEGMENT MUST POINT TO DATA SEGMENT.
  mov  ah, 13h        ;SERVICE TO DISPLAY STRING WITH COLOR.
  mov  bh, 0          ;PAGE (ALWAYS ZERO).
  mov  bl, color
  mov  dl, x          ;X (SCREEN COORDINATE). 
  mov  dh, y          ;Y (SCREEN COORDINATE). 
  int  10h           ;BIOS SCREEN SERVICES.  

  ret

答案 1 :(得分:0)

您可以使用Linq将控件放入数组中。

Dim Array() As TextBox = Me.Controls.OfType(Of TextBox)().Where(Function(c) c.Name.Contains("")).ToArray()
Array.Reverse(Array)

在你看到空引号的地方,比如@Kevin说,你可以在你的名字前面找到那些文本框并填充它们,或者你可以像我一样把它留空,它会将表单上的每个文本框编入索引阵列。

然后你可以使用这样的东西来访问TextBox

Dim i As Integer = 0
Array(i).Text = "Stuff"