問題が発生しました。私が作業しているプログラムがあり、複数の.txtファイルを1つずつ読み込んでwords()
という文字列配列を更新する必要があります。主な問題は、アップロードした最初のファイルがfiles()
文字列配列になっていることです。ドラッグ&ドロップイベントを実行すると、配列がいっぱいで2番目のアップロードを許可しません。正常にアップロードされた後にfiles()
アレイをリセットするにはどうすればいいですか?StreamReaderを使用した.txtファイルの読み込み
サンプルコード:
Dim words(7) As String
Dim i As Integer = 0
Public Sub frmMain_DragDrop(sender As Object, e As DragEventArgs) Handles MyBase.DragDrop
Dim word As String = ""
Try
Dim files() As String = e.Data.GetData(DataFormats.FileDrop)
For Each path In files
MsgBox(path)
Dim sr As New StreamReader(path)
Do Until sr.Peek = -1
word = sr.ReadLine()
words(i) = word
frmDefaultkWh.lbDefaultkWh.Items.Add(cbAppliances.Items(i) + " = " + words(i))
i = i + 1
Loop
Next
GetPower()
Catch ex As Exception
'MessageBox.Show(ex.ToString())
End Try
End Sub
Private Sub frmMain_DragEnter(sender As Object, e As DragEventArgs) Handles MyBase.DragEnter
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
e.Effect = DragDropEffects.Copy
End If
End Sub
_ "完全" _と_ **正確** _の問題が何であるかを明確にしてください。 'MyBase.DragDrop'が呼び出されるたびに再宣言するので、配列は" full "になることはできません。それは不可能です。 –
'words()'文字列配列を更新するために2番目のファイルをドラッグすると、System.IndexOutOfRangeExceptionが発生し、配列は更新されません。 'file()'配列でない場合。次に、次のファイルをアップロードした後、 'words()'配列から値を消去するにはどうしたらいいですか? – Ingelbert
'単語'は配列ではなく、むしろ[** List(Of T) '**](https://msdn.microsoft.com/en-us/library/6sh2ey19(v = vs.110).aspx)あなたは動的なサイズのコレクションが必要です(見つけられる単語の数は分かりません)。リストに新しい項目を追加するには 'yourList.Add(- )'を呼び出し、すべてを削除するには 'yourList.Clear()'を呼び出します。 –