あなたのループはあなたの入力から配列内のすべての要素を割り当てています。
アレイで次に使用可能なスロットだけを設定したい場合は、ループを使用しないでください。
Public Index As Integer
Public FolderName(20) As String
Public FolderReference(20) As String
Sub SetArrayValues()
If Not Index<FolderName.Length Then
MsgBox("Array Is Full", MsgBoxStyle.Critical, "Error")
Else If collfoldername.Text = "" Or collfolderref.Text = "" Then
MsgBox("Please fill all fields!", MsgBoxStyle.Critical, "Error")
Else
FolderName(Index) = collfoldername.Text
FolderReference(Index) = collfoldername.Text
collfoldername.Text = ""
collfolderref.Text = ""
Index +=1
collfoldername.Focus()
End If
End Sub
Public Sub Button1_Click(Sender As Object, E As EventArgs) Handles Button1.Click
SetArrayValues()
End Sub
あなたは、配列のサイズを変更する必要があるでしょう、あなたの配列のサイズよりも、すべてのより多くのアイテムにしたい場合は、次の代わりに、配列内の自分の位置を追跡し、メソッド呼び出しごとに変数1時間をインクリメントする変数を使用する必要があります:
Public Index As Integer
Public FolderName(20) As String
Public FolderReference(20) As String
Sub SetArrayValues()
If Not Index<FolderName.Length Then
ReDim Preserve FolderName(Index)
ReDim Preserve FolderNameReference(Index)
End If
If collfoldername.Text = "" Or collfolderref.Text = "" Then
MsgBox("Please fill all fields!", MsgBoxStyle.Critical, "Error")
Else
FolderName(Index) = collfoldername.Text
FolderReference(Index) = collfoldername.Text
collfoldername.Text = ""
collfolderref.Text = ""
Index +=1
collfoldername.Focus()
End If
End Sub
Public Sub Button1_Click(Sender As Object, E As EventArgs) Handles Button1.Click
SetArrayValues()
End Sub
もう1つの方法は、Generic.List(Of T)
を使用して必要に応じて値を追加することです。この方法を使用すると、配列内の位置を追跡する必要はありません。
Public FolderName As New Generic.List(Of String)
Public FolderReference As New Generic.List(Of String)
Sub AddValues()
If collfoldername.Text = "" Or collfolderref.Text = "" Then
MsgBox("Please fill all fields!", MsgBoxStyle.Critical, "Error")
Else
FolderName.Add(collfoldername.Text)
FolderReference.Add(collfoldername.Text)
collfoldername.Text = ""
collfolderref.Text = ""
collfoldername.Focus()
End If
End Sub
Public Sub Button1_Click(Sender As Object, E As EventArgs) Handles Button1.Click
AddValues()
End Sub
ループしています。 1つのアイテムのみを更新する場合は、ループしないでください。コレクションに何かを追加する場合は、配列の代わりにリストを使用してください。 –
LarsTech
なぜcollfoldername.Textを21回挿入する必要がありますか? – jonathana
ここでは2つのオプションがあります。まず、@LarsTechの推奨に従い、代わりに 'List(Of T)'を使用し、何か追加する必要があるたびに.Addを使用するのが最も簡単です。配列を操作する必要がある場合は、静的変数を使用して、使用する必要がある次のインデックスを覚えて、そこから値を割り当て、各追加操作の後にインデックスをインクリメントします。 – Fabulous