2017-01-23 4 views
0

Ich habe 60 Textfelder in Vb und ich möchte alle in eine Textdatei exportieren. Ich benutze diesen Code zu tun:Weisen Sie die Zählernummer für den Objektnamen zu

My.Computer.FileSystem.WriteAllText("Filename.txt", TextBox1.Text) 

Weil ich 60 Textfelder haben, damit ich mir eine lange Zeit in Anspruch nehmen, das zu tun, verwende ich die For ... Next das Verfahren zu erleichtern. Ich möchte einen Code wie folgt haben:

For i as integer = 1 to 60 
    My.Computer.FileSystem.WriteAllText("Filename.txt", TextBox(i).Text) 
Next 

Kann ich das in Vb tun? Gibt es alternative Möglichkeiten, das zu tun? Vielen Dank!

Antwort

0

Sie können eine Liste von Textfeldern erstellen und alle erforderlichen Textfelder zur Liste hinzufügen. Verwenden Sie foreach loop in der Liste, um nacheinander auf die Textfelder zuzugreifen und ihre Texteigenschaft wie gewünscht zu verwenden.

0

Sie können die Textfelder erhalten, umControls.Find() wie folgt aus:

Dim fileName As String = "c:\some folder\path\Filename.txt" 
    Using sw As New System.IO.StreamWriter(fileName) 
     Dim tb As TextBox 
     Dim matches() As Control 
     For i As Integer = 1 To 60 
      matches = Me.Controls.Find("TextBox" & i, True) 
      If matches.Length > 0 AndAlso TypeOf matches(0) Is TextBox Then 
       tb = DirectCast(matches(0), TextBox) 
       sw.WriteLine(tb.Text) 
      End If 
     Next 
    End Using 

Wenn Sie einfach über die Controls-Auflistung durchlaufen die Textfelder in einer anderen Reihenfolge zurückgegeben werden können (als ihr Name), wenn Sie hatte sie ausgeschnitten oder kopiert/eingefügt, als Sie das Formular erstellt haben.

+0

Tks für Antwort! Aber ich habe das Problem, dass es nichts in die Textdatei schreibt! –

+0

Der Code funktioniert gut für mich. Entweder erhalten Sie eine Ausnahme beim Versuch, die Datei zu schreiben, und Sie ignorieren sie oder es wird keine der TextBoxen gefunden, da Sie ein anderes Namensschema haben. –

Verwandte Themen