Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här genomgången visar hur du öppnar och läser en fil med hjälp av StreamReader klassen, kontrollerar om en fil används, söker efter en sträng i en fil som lästs med en instans av StreamReader klassen, och skriver till en fil med hjälp av StreamWriter klassen.
Anmärkning
Datorn kan visa olika namn eller platser för vissa av Visual Studio-användargränssnittselementen i följande instruktioner. Den Visual Studio-utgåva som du har och de inställningar som du använder avgör dessa element. Mer information finns i Anpassning av utvecklingsmiljön.
Skapa programmet
Starta Visual Studio och starta projektet genom att skapa ett formulär som användaren kan använda för att skriva till den avsedda filen.
Så här skapar du projektet
På menyn Arkiv väljer du Nytt projekt.
I fönstret Nytt projekt klickar du på Windows-program.
I rutan Namn skriver du
MyDiaryoch klickar på OK.Visual Studio lägger till projektet i Solution Explorer och Windows Forms Designer öppnas.
Lägg till kontrollerna i följande tabell i formuläret och ange motsvarande värden för deras egenskaper.
| Objekt | Egenskaper | Värde |
|---|---|---|
| Button |
Namn SMS |
SubmitSkicka in bidrag |
| Button |
Namn SMS |
ClearRensa inmatning |
| TextBox |
Namn SMS Multiradig |
EntryAnge något. False |
Skriva till filen
Om du vill lägga till möjligheten att skriva till en fil via programmet använder du StreamWriter klassen . StreamWriter är utformad för teckenutdata i en viss kodning, medan Stream klassen är utformad för byteindata och utdata. Använd StreamWriter för att skriva rader med information till en standardtextfil. Mer information om klassen StreamWriterfinns i StreamWriter .
Lägga till skrivfunktioner
På menyn Visa väljer du Kod för att öppna kodredigeraren.
Eftersom programmet refererar till System.IO namnområdet lägger du till följande instruktioner i början av koden, före klassdeklarationen för formuläret, som börjar
Public Class Form1.Imports System.IOInnan du skriver till filen måste du skapa en instans av en StreamWriter klass.
På menyn Visa väljer du Designer för att återgå till Windows Forms Designer. Dubbelklicka på
Submitknappen för att skapa en Click händelsehanterare för knappen och lägg sedan till följande kod.Dim fw As StreamWriter
Anmärkning
Visual Studio Integrated Development Environment (IDE) återgår till kodredigeraren och placerar insättningspunkten i händelsehanteraren där du bör lägga till koden.
Om du vill skriva till filen använder du Write -metoden för StreamWriter klassen. Lägg till följande kod direkt efter
Dim fw As StreamWriter. Du behöver inte oroa dig för att ett undantag utlöses om filen inte hittas, eftersom den skapas om den inte redan finns.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 TryKontrollera att användaren inte kan skicka en tom post genom att lägga till följande kod direkt efter
Dim ReadString As String.If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then Entry.Text = "Please enter something." Return End IfEftersom det här är en dagbok vill användaren tilldela ett datum till varje post. Infoga följande kod efter
fw = New StreamWriter("C:\MyDiary.txt", True)för att ange variabelnTodaytill aktuellt datum.Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)Slutligen bifogar du kod för att rensa TextBox. Lägg till följande kod i
Clearknappens Click händelse.Entry.Text = ""
Lägga till visningsfunktioner i dagboken
I det här avsnittet lägger du till en funktion som visar den senaste posten i DisplayEntryTextBox. Du kan också lägga till en ComboBox som visar olika poster och från vilken en användare kan välja en post som ska visas i DisplayEntryTextBox. En instans av StreamReader klassen läser från MyDiary.txt. Precis som StreamWriter klassen StreamReader är avsedd att användas med textfiler.
I det här avsnittet av genomgången lägger du till kontrollerna i följande tabell i formuläret och anger motsvarande värden för deras egenskaper.
| Kontroll | Egenskaper | Värden |
|---|---|---|
| TextBox |
Namn synlig Storlek Multiradig |
DisplayEntryFalse120,60True |
| Button |
Namn SMS |
DisplayVisa |
| Button |
Namn SMS |
GetEntriesHämta poster |
| ComboBox |
Namn SMS Aktiverad |
PickEntriesVälj en post False |
Så här fyller du i kombinationsrutan
PickEntriesComboBox Används för att visa de datum då en användare skickar varje post, så att användaren kan välja en post från ett visst datum. Skapa en Click händelsehanterare påGetEntriesknappen och lägg till följande kod.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 = TrueTesta koden genom att trycka på F5 för att kompilera applikationen och klicka sedan på Hämta poster. Klicka på listrutepilen i ComboBox för att visa postningsdatumen.
Att välja och visa enskilda poster
Skapa en Click händelsehanterare för
Displayknappen och lägg till följande kod.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 = ReadStringTesta koden genom att trycka på F5 för att kompilera programmet och sedan skicka in ett bidrag. Klicka på Hämta poster, välj en post från ComboBoxoch klicka sedan på Visa. Innehållet i den markerade posten visas i
DisplayEntryTextBox.
Aktivera användare att ta bort eller ändra poster
Slutligen kan du inkludera ytterligare funktioner som gör det möjligt för användare att ta bort eller ändra en post med hjälp DeleteEntry av och EditEntry knappar. Båda knapparna förblir inaktiverade om inte en post visas.
Lägg till kontrollerna i följande tabell i formuläret och ange motsvarande värden för deras egenskaper.
| Kontroll | Egenskaper | Värden |
|---|---|---|
| Button |
Namn SMS Aktiverad |
DeleteEntryTa bort inlägg False |
| Button |
Namn SMS Aktiverad |
EditEntryRedigera inlägg False |
| Button |
Namn SMS Aktiverad |
SubmitEditSkicka redigera False |
Så här aktiverar du borttagning och ändring av poster
Lägg till följande kod i
Displayknappens Click händelse, efterDisplayEntry.Text = ReadString.DeleteEntry.enabled = TrueSkapa en Click händelsehanterare för
DeleteEntryknappen och lägg till följande kod.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 IfNär en användare visar en post aktiveras
EditEntryknappen. Lägg till följande kod i Click händelsen förDisplayknappen efterDisplayEntry.Text = ReadString.EditEntry.Enabled = TrueSkapa en Click händelsehanterare för
EditEntryknappen och lägg till följande kod.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = TrueSkapa en Click händelsehanterare för
SubmitEditknappen och lägg till följande kodDim 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
Testa koden genom att trycka på F5 för att kompilera programmet. Klicka på Hämta poster, välj en post och klicka sedan på Visa. Inträdet visas i DisplayEntryTextBox. Klicka på Redigera post. Inträdet visas i EntryTextBox. Redigera posten i EntryTextBox och klicka på Skicka redigera. Öppna filen för att bekräfta korrigeringen MyDiary.txt . Välj en post och klicka på Ta bort post. När begäranden MessageBox bekräftas klickar du på OK. Stäng programmet och öppna MyDiary.txt för att bekräfta borttagningen.