Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento názorný postup ukazuje, jak otevřít a číst soubor pomocí StreamReader třídy, zkontrolovat, jestli se k souboru přistupuje, vyhledat řetězec v souboru přečteném pomocí instance StreamReader třídy a zapisovat do souboru pomocí StreamWriter třídy.
Poznámka:
Počítač může v následujících pokynech zobrazit různé názvy nebo umístění některých prvků uživatelského rozhraní sady Visual Studio. Edice sady Visual Studio, kterou máte, a nastavení, která používáte, určují tyto prvky. Další informace najdete v tématu Přizpůsobeníintegrovaného vývojového prostředí (IDE).
Vytvoření aplikace
Spusťte Visual Studio a zahajte projekt vytvořením formuláře, který může uživatel použít k zápisu do určeného souboru.
Vytvoření projektu
V nabídce Soubor vyberte Nový projekt.
V podokně Nový projekt klikněte na aplikaci systému Windows.
Do pole Název zadejte
MyDiary
a klepněte na tlačítko OK.Visual Studio přidá projekt do Průzkumníka řešení a otevře se Windows Forms Designer .
Přidejte ovládací prvky v následující tabulce do formuláře a nastavte odpovídající hodnoty pro jejich vlastnosti.
Objekt | Vlastnosti | Hodnota |
---|---|---|
Button |
název Text |
Submit Odeslat položku |
Button |
název Text |
Clear Vymazat položku |
TextBox |
název Text víceřádkové |
Entry Zadejte něco. False |
Zápis do souboru
Pokud chcete přidat možnost zápisu do souboru prostřednictvím aplikace, použijte StreamWriter třídu. StreamWriter je určen pro výstup znaků v určitém kódování, zatímco Stream třída je určena pro bajtový vstup a výstup. Slouží StreamWriter k zápisu řádků informací do standardního textového souboru. Další informace o StreamWriter třídě naleznete v tématu StreamWriter.
Přidání funkce zápisu
V nabídce Zobrazení zvolte Kód a otevřete Editor kódu.
Vzhledem k tomu, že aplikace odkazuje na System.IO obor názvů, přidejte následující příkazy na začátek kódu před deklaraci třídy pro formulář, který začíná
Public Class Form1
.Imports System.IO
Před zápisem do souboru je nutné vytvořit instanci StreamWriter třídy.
V nabídce Zobrazení zvolte Návrhář a vraťte se do návrháře Windows Forms. Dvojitým kliknutím na tlačítko
Submit
vytvoříte obslužnou rutinu události pro tlačítko Click a přidejte následující kód.Dim fw As StreamWriter
Poznámka:
Integrované vývojové prostředí (IDE) sady Visual Studio se vrátí do Editoru kódu a umístí bod vložení do obslužné rutiny události, kam byste měli přidat kód.
K zápisu do souboru použijte Write metodu StreamWriter třídy. Přidejte následující kód přímo za
Dim fw As StreamWriter
. Nemusíte se obávat, že pokud se soubor nenajde, vyvolá se výjimka, protože se vytvoří, pokud ještě neexistuje.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
Ujistěte se, že uživatel nemůže odeslat prázdnou položku přidáním následujícího kódu přímo za
Dim ReadString As String
.If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then Entry.Text = "Please enter something." Return End If
Vzhledem k tomu, že se jedná o deník, bude uživatel chtít přiřadit datum ke každé položce. Vložte následující kód za
fw = New StreamWriter("C:\MyDiary.txt", True)
, abyste nastavili proměnnouToday
na aktuální datum.Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)
Nakonec připojte kód, který vymaže TextBox. Do události tlačítka
Clear
přidejte následující kód Click.Entry.Text = ""
Přidání funkcí zobrazení do deníku
V této části přidáte funkci, která zobrazí nejnovější položku v souboru DisplayEntry
TextBox. Můžete také přidat ComboBox , který zobrazuje různé položky a ze kterých uživatel může vybrat položku, která se má zobrazit v DisplayEntry
TextBoxsouboru . Instance StreamReader třídy čte z MyDiary.txt
. Stejně jako třída StreamWriterStreamReader je určená pro použití s textovými soubory.
Pro tuto část návodu přidejte ovládací prvky v následující tabulce do formuláře a nastavte odpovídající hodnoty pro jejich vlastnosti.
Řízení | Vlastnosti | Hodnoty |
---|---|---|
TextBox |
název viditelný velikost víceřádkové |
DisplayEntry False 120,60 True |
Button |
název Text |
Display zobrazení |
Button |
název Text |
GetEntries Získání položek |
ComboBox |
název Text Povoleno |
PickEntries Výběr položky False |
Naplnění kombinovaného pole
Slouží
PickEntries
ComboBox k zobrazení kalendářních dat, kdy uživatel odešle každou položku, aby uživatel mohl vybrat položku z konkrétního data. Vytvořte Click obslužnou rutinu události pro tlačítkoGetEntries
a přidejte následující kód.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
Chcete-li otestovat kód, stisknutím klávesy F5 zkompilujte aplikaci a klikněte na tlačítko Získat položky. Kliknutím na šipku rozevíracího seznamu v ComboBox zobrazíte data zadání.
Výběr a zobrazení jednotlivých položek
Vytvořte obslužnou rutinu události pro tlačítko Click
Display
a přidejte následující kód.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
Pokud chcete otestovat kód, stisknutím klávesy F5 zkompilujte aplikaci a pak odešlete položku. Klepněte na tlačítko Získat položky, vyberte položku z ComboBoxa potom klepněte na tlačítko Zobrazit. Obsah vybrané položky se zobrazí v souboru
DisplayEntry
TextBox.
Povolení uživatelům odstranit nebo upravit položky
Nakonec můžete zahrnout další funkce, které uživatelům umožní odstranit nebo upravit položku pomocí DeleteEntry
tlačítek.EditEntry
Obě tlačítka zůstávají zakázaná, pokud se nezobrazí položka.
Přidejte ovládací prvky v následující tabulce do formuláře a nastavte odpovídající hodnoty pro jejich vlastnosti.
Řízení | Vlastnosti | Hodnoty |
---|---|---|
Button |
název Text Povoleno |
DeleteEntry Odstranit položku False |
Button |
název Text Povoleno |
EditEntry Upravit položku False |
Button |
název Text Povoleno |
SubmitEdit Odeslat úpravy False |
Povolení odstranění a úpravy položek
Do události tlačítka
Display
přidejte následující kód Click zaDisplayEntry.Text = ReadString
.DeleteEntry.enabled = True
Vytvořte obslužnou rutinu události pro tlačítko Click
DeleteEntry
a přidejte následující kód.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
Když uživatel zobrazí položku,
EditEntry
tlačítko se aktivuje. Přidejte následující kód Click do událostiDisplay
tlačítka poDisplayEntry.Text = ReadString
.EditEntry.Enabled = True
Vytvořte obslužnou rutinu události pro tlačítko Click
EditEntry
a přidejte následující kód.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = True
Vytvořte obslužnou rutinu události pro tlačítko Click pomocí
SubmitEdit
a přidejte následující kód.Dim 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
Pokud chcete otestovat kód, stiskněte klávesu F5 a zkompilujte aplikaci. Klepněte na tlačítko Získat položky, vyberte položku a klepněte na tlačítko Zobrazit. Položka se zobrazí v souboru DisplayEntry
TextBox. Klikněte na Upravit položku. Položka se zobrazí v souboru Entry
TextBox. Upravte položku v Entry
TextBox položce a klikněte na Odeslat úpravy.
MyDiary.txt
Otevřete soubor a potvrďte opravu. Teď vyberte položku a klikněte na Odstranit položku.
MessageBox Po potvrzení žádostí klikněte na ok. Zavřete aplikaci a otevřete MyDiary.txt
, abyste potvrdili odstranění.