0

我需要在文本框中输入值,当我按下回车键时,我必须将文本框值保存到一个数组中。我怎样才能实现这个功能?

4

4 回答 4

1

如果您只想在每次按下按钮时添加一个新条目,请使用以下内容:

Redim Preserve YourArray(LBound(YourArray) To UBound(YourArray) + 1)
YourArray(UBound(YourArray)) = TextBox.Text

请注意,当数组包含大量项目时,这可能会变得非常缓慢且效率低下,因为它每次都在重新分配内存。更好的方法是在块中扩展数组的大小,同时跟踪最后一个有效条目。

于 2012-07-23T13:00:19.750 回答
1

我会使用一个单独的计数器变量来重新定义数组的大小,如下所示:

Option Explicit

Dim myArr() As String  '~~~ dynamic array
Dim lngCnt As Long     '~~~ a counter variable that keep track of the index

' inital stage..
Private Sub Form_Load()
    lngCnt = 0
End Sub

' on KeyPress
Private Sub Text1_KeyPress(KeyAscii As Integer)
    If KeyAscii = 13 Then   '~~~ if Enter Key is pressed..
        ReDim Preserve myArr(lngCnt)    '~~~ reclare the array with the new size, while preserving any elements it may contain
        myArr(lngCnt) = Text1.Text      '~~~ store the line
        Text1.Text = ""     '~~~ empty the textbox, so that you could type the next line

        lngCnt = lngCnt + 1 '~~~ increment the counter, which we would use as size during the next keypress
    End If
End Sub

' to display the elements
Private Sub Command1_Click()
    Dim i As Long

    For i = LBound(myArr) To UBound(myArr)  '~~~ loop through the elements(from Lowerbound to Upperbound)..
        Debug.Print myArr(i)                '~~~ ..and display the item.
    Next
End Sub
于 2012-07-23T15:41:18.670 回答
0

只需给所有文本框起相同的名称

于 2012-07-23T12:34:49.227 回答
0

简短的回答是使用split来分解字符串(您需要告诉用户使用什么字符来拆分)。

长答案不要将用户界面更改为转发器,并让他们使用每个值的输入从这里开始http://blogs.microsoft.co.il/blogs/basil/archive/2008/08/20/javascript-repeater- control-datarepeater-using-jquery-presenter-1-0-8-uicontrols-library.aspx

否则你将永远调试。

于 2012-07-23T12:37:32.477 回答