Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In dieser exemplarischen Vorgehensweise wird veranschaulicht, wie Sie eine Datei mithilfe der StreamReader Klasse öffnen und lesen, überprüfen, ob auf eine Datei zugegriffen wird, nach einer Zeichenfolge in einer Datei suchen, die mit einer Instanz der StreamReader Klasse gelesen wird, und in eine Datei mit der StreamWriter Klasse schreiben.
Hinweis
Auf Ihrem Computer werden möglicherweise unterschiedliche Namen oder Speicherorte für einige der Visual Studio-Benutzeroberflächenelemente in den folgenden Anweisungen angezeigt. Die Visual Studio-Edition, über die Sie verfügen, und die Einstellungen, die Sie verwenden, bestimmen diese Elemente. Weitere Informationen finden Sie unter Personalisierung der IDE.
Erstellen der Anwendung
Starten Sie Visual Studio, und beginnen Sie das Projekt, indem Sie ein Formular erstellen, das der Benutzer zum Schreiben in die festgelegte Datei verwenden kann.
So erstellen Sie das Projekt
Wählen Sie im Menü Datei die Option Neues Projekt aus.
Klicken Sie im Bereich "Neues Projekt " auf "Windows-Anwendung".
Geben Sie im Feld 'Name' den Namen ein
MyDiary
, und klicken Sie auf 'OK'.Visual Studio fügt das Projekt dem Projektmappen-Explorer hinzu, und der Windows Forms-Designer wird geöffnet.
Fügen Sie die Steuerelemente in der folgenden Tabelle dem Formular hinzu, und legen Sie die entsprechenden Werte für ihre Eigenschaften fest.
Objekt | Eigenschaften | Wert |
---|---|---|
Button |
Name Text |
Submit Eintrag absenden |
Button |
Name Text |
Clear Eintrag löschen |
TextBox |
Name Text Mehrzeile |
Entry Bitte geben Sie etwas ein. False |
In eine Datei schreiben
Um die Möglichkeit hinzuzufügen, über die Anwendung in eine Datei zu schreiben, verwenden Sie die StreamWriter Klasse. StreamWriter ist für die Zeichenausgabe in einer bestimmten Codierung konzipiert, während die Stream Klasse für Byteeingabe und -ausgabe ausgelegt ist. Verwenden Sie StreamWriter zum Schreiben von Informationszeilen in eine Standardtextdatei. Weitere Informationen zur StreamWriter Klasse finden Sie unter StreamWriter.
So fügen Sie Schreibfunktionen hinzu
Wählen Sie im Menü "Ansicht " die Option "Code " aus, um den Code-Editor zu öffnen.
Da die Anwendung auf den System.IO Namespace verweist, fügen Sie am Anfang des Codes die folgenden Anweisungen hinzu, bevor die Klassendeklaration für das Formular beginnt
Public Class Form1
.Imports System.IO
Vor dem Schreiben in die Datei müssen Sie eine Instanz einer StreamWriter Klasse erstellen.
Wählen Sie im Menü "Ansicht" die Option "Designer" aus, um zum Windows Forms-Designer zurückzukehren. Doppelklicken Sie auf die
Submit
Schaltfläche, um einen Click Ereignishandler für die Schaltfläche zu erstellen, und fügen Sie dann den folgenden Code hinzu.Dim fw As StreamWriter
Hinweis
Die integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) von Visual Studio kehrt zum Code-Editor zurück und positioniert die Einfügemarke innerhalb des Ereignishandlers, in dem Sie den Code hinzufügen sollten.
Verwenden Sie die Write Methode der StreamWriter Klasse, um in die Datei zu schreiben. Fügen Sie den folgenden Code direkt hinter
Dim fw As StreamWriter
. Sie müssen sich keine Sorgen machen, dass eine Ausnahme ausgelöst wird, wenn die Datei nicht gefunden wird, da sie erstellt wird, wenn sie noch nicht vorhanden ist.Dim ReadString As String Try 'Pass the file path and name to the StreamWriter constructor. 'Indicate that Append is True, so file will not be overwritten. fw = New StreamWriter("C:\MyDiary.txt", True) ReadString = Entry.Text fw.WriteLine(ReadString) Finally 'Close the file. fw.Close() End Try
Stellen Sie sicher, dass der Benutzer keinen leeren Eintrag übermitteln kann, indem Sie den folgenden Code direkt danach
Dim ReadString As String
hinzufügen.If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then Entry.Text = "Please enter something." Return End If
Da es sich um ein Kalender handelt, möchte der Benutzer jedem Eintrag ein Datum zuweisen. Fügen Sie den folgenden Code nach
fw = New StreamWriter("C:\MyDiary.txt", True)
ein, um die VariableToday
auf das aktuelle Datum festzulegen.Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)
Fügen Sie schließlich Code hinzu, um den TextBox zu löschen. Fügen Sie dem Ereignis der
Clear
Schaltfläche Click den folgenden Code hinzu.Entry.Text = ""
Hinzufügen von Anzeigefeatures zum Kalender
In diesem Abschnitt fügen Sie ein Feature hinzu, das den neuesten Eintrag in der DisplayEntry
TextBoxDatei anzeigt. Sie können auch ein ComboBox Element hinzufügen, das verschiedene Einträge anzeigt und aus dem ein Benutzer einen Eintrag auswählen kann, der im DisplayEntry
TextBox Bereich angezeigt werden soll. Eine Instanz der StreamReader Klasse liest aus MyDiary.txt
. Wie die StreamWriter Klasse StreamReader ist für die Verwendung mit Textdateien vorgesehen.
Fügen Sie für diesen Abschnitt der exemplarischen Vorgehensweise die Steuerelemente in der folgenden Tabelle zum Formular hinzu, und legen Sie die entsprechenden Werte für ihre Eigenschaften fest.
Steuerung | Eigenschaften | Werte |
---|---|---|
TextBox |
Name Sichtbaren Größe Mehrzeile |
DisplayEntry False 120,60 True |
Button |
Name Text |
Display Anzeige |
Button |
Name Text |
GetEntries Einträge abrufen |
ComboBox |
Name Text Aktiviert |
PickEntries Eintrag auswählen False |
Auffüllen des Kombinationsfelds
Es
PickEntries
ComboBox wird verwendet, um die Datumsangaben anzuzeigen, an denen ein Benutzer jeden Eintrag übermittelt, damit der Benutzer einen Eintrag aus einem bestimmten Datum auswählen kann. Erstellen Sie einen Click Ereignishandler für dieGetEntries
Schaltfläche, und fügen Sie den folgenden Code hinzu.Dim fr As StreamReader = Nothing Dim FileString As String FileString = "" Try fr = New System.IO.StreamReader("C:\MyDiary.txt") PickEntries.Items.Clear() PickEntries.Enabled = True Do FileString = fr.ReadLine If IsDate(FileString) Then PickEntries.Items.Add(FileString) End If Loop Until (FileString Is Nothing) Finally If fr IsNot Nothing Then fr.Close() End If End Try PickEntries.Enabled = True
Um den Code zu testen, drücken Sie F5, um die Anwendung zu kompilieren, und klicken Sie dann auf "Einträge abrufen". Klicken Sie auf den Dropdownpfeil im ComboBox, um die Eintragstermine anzuzeigen.
Um einzelne Einträge auszuwählen und anzuzeigen
Erstellen Sie einen Click Ereignishandler für die
Display
Schaltfläche, und fügen Sie den folgenden Code hinzu.Dim fr As StreamReader Dim ReadString As String 'Make sure ReadString begins empty. ReadString = "" Dim FileString As String fr = New StreamReader("C:\MyDiary.txt") 'If no entry has been selected, show the whole file. If PickEntries.Enabled = False Or PickEntries.SelectedText Is Nothing Then Do 'Read a line from the file into FileString. FileString = fr.ReadLine 'add it to ReadString ReadString = ReadString & ControlChars.CrLf & FileString Loop Until (FileString = Nothing) Else 'An entry has been selected, find the line that matches. Do FileString = fr.ReadLine Loop Until FileString = CStr(PickEntries.SelectedItem) FileString = CStr(PickEntries.SelectedItem) & ControlChars.CrLf ReadString = FileString & fr.ReadLine 'Read from the file until EOF or another Date is found. Do Until ((fr.Peek < 0) Or (IsDate(fr.ReadLine))) ReadString = ReadString & fr.ReadLine Loop End If fr.Close() DisplayEntry.Visible = True DisplayEntry.Text = ReadString
Um den Code zu testen, drücken Sie F5, um die Anwendung zu kompilieren, und übermitteln Sie dann einen Eintrag. Klicken Sie auf "Einträge abrufen", wählen Sie einen Eintrag aus dem ComboBoxEintrag aus, und klicken Sie dann auf "Anzeigen". Die Inhalte des ausgewählten Eintrags werden in der
DisplayEntry
TextBox angezeigt.
Benutzern das Löschen oder Ändern von Einträgen ermöglichen
Schließlich können Sie zusätzliche Funktionen hinzufügen, mit denen Benutzer einen Eintrag mithilfe der Schaltflächen DeleteEntry
und EditEntry
löschen oder ändern können. Beide Schaltflächen bleiben deaktiviert, es sei denn, ein Eintrag wird angezeigt.
Fügen Sie die Steuerelemente in der folgenden Tabelle dem Formular hinzu, und legen Sie die entsprechenden Werte für ihre Eigenschaften fest.
Steuerung | Eigenschaften | Werte |
---|---|---|
Button |
Name Text Aktiviert |
DeleteEntry Eintrag löschen False |
Button |
Name Text Aktiviert |
EditEntry Eintrag bearbeiten False |
Button |
Name Text Aktiviert |
SubmitEdit Bearbeiten übermitteln False |
So aktivieren Sie das Löschen und Ändern von Einträgen
Fügen Sie den folgenden Code zum Ereignis
Display
der Click-Schaltfläche nachDisplayEntry.Text = ReadString
hinzu.DeleteEntry.enabled = True
Erstellen Sie einen Click Ereignishandler für die
DeleteEntry
Schaltfläche, und fügen Sie den folgenden Code hinzu.Dim fr As StreamReader Dim ReadString As String Dim WriteString As String Dim ConfirmDelete As MsgBoxResult fr = New StreamReader("C:\MyDiary.txt") ReadString = fr.ReadLine ' Read through the textfile Do Until (fr.Peek < 0) ReadString = ReadString & vbCrLf & fr.ReadLine Loop WriteString = Replace(ReadString, DisplayEntry.Text, "") fr.Close() ' Check to make sure the user wishes to delete the entry ConfirmDelete = MsgBox("Do you really wish to delete this entry?", MsgBoxStyle.OKCancel) If ConfirmDelete = MsgBoxResult.OK Then File.Delete("C:\MyDiary.txt") Dim fw As StreamWriter = File.CreateText("C:\MyDiary.txt") fw.WriteLine(WriteString) fw.Close() ' Reset controls on the form DisplayEntry.Text = "" PickEntries.Text = "" PickEntries.Items.Clear() PickEntries.Enabled = False DeleteEntry.Enabled = False End If
Wenn ein Benutzer einen Eintrag anzeigt, wird die
EditEntry
Schaltfläche aktiviert. Fügen Sie dem Click-Ereignis der SchaltflächeDisplay
nachDisplayEntry.Text = ReadString
den folgenden Code hinzu:EditEntry.Enabled = True
Erstellen Sie einen Click Ereignishandler für die
EditEntry
Schaltfläche, und fügen Sie den folgenden Code hinzu.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = True
Erstellen eines Click Ereignishandlers für die
SubmitEdit
Schaltfläche und Hinzufügen des folgenden CodesDim fr As StreamReader Dim ReadString As String Dim WriteString As String If Entry.Text = "" Then MsgBox("Use Delete to Delete an Entry") Return End If fr = New StreamReader("C:\MyDiary.txt") ReadString = fr.ReadLine Do Until (fr.Peek < 0) ReadString = ReadString & vbCrLf & fr.ReadLine Loop WriteString = Replace(ReadString, DisplayEntry.Text, Entry.Text) fr.Close() File.Delete("C:\MyDiary.txt") Dim fw As StreamWriter = File.CreateText("C:\MyDiary.txt") fw.WriteLine(WriteString) fw.Close() DisplayEntry.Text = Entry.Text Entry.Text = "" EditEntry.Enabled = False SubmitEdit.Enabled = False
Drücken Sie F5, um die Anwendung zu kompilieren und Ihren Code zu testen. Klicken Sie auf "Einträge abrufen", wählen Sie einen Eintrag aus, und klicken Sie dann auf "Anzeigen". Der Eintrag wird in DisplayEntry
TextBox angezeigt. Klicken Sie auf "Eintrag bearbeiten". Der Eintrag wird in Entry
TextBox angezeigt. Bearbeiten Sie den Eintrag im Entry
TextBox Und klicken Sie auf "Bearbeiten senden". Öffnen Sie die MyDiary.txt
Datei, um Ihre Korrektur zu bestätigen. Wählen Sie nun einen Eintrag aus, und klicken Sie auf "Eintrag löschen". Wenn Sie in MessageBox zur Bestätigung aufgefordert werden, klicken Sie auf OK. Schließen Sie die Anwendung, und öffnen MyDiary.txt
Sie sie, um den Löschvorgang zu bestätigen.