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
MyDiarya 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 |
SubmitOdeslat položku |
| Button |
název Text |
ClearVymazat položku |
| TextBox |
název Text víceřádkové |
EntryZadejte 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.IOPř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
Submitvytvoří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 TryUjistě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 IfVzhledem 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ěnnouTodayna 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
Clearpř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 DisplayEntryTextBox. 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 DisplayEntryTextBoxsouboru . 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é |
DisplayEntryFalse120,60True |
| Button |
název Text |
Displayzobrazení |
| Button |
název Text |
GetEntriesZískání položek |
| ComboBox |
název Text Povoleno |
PickEntriesVýběr položky False |
Naplnění kombinovaného pole
Slouží
PickEntriesComboBox 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čítkoGetEntriesa 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 = TrueChcete-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
Displaya 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 = ReadStringPokud 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
DisplayEntryTextBox.
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 |
DeleteEntryOdstranit položku False |
| Button |
název Text Povoleno |
EditEntryUpravit položku False |
| Button |
název Text Povoleno |
SubmitEditOdeslat úpravy False |
Povolení odstranění a úpravy položek
Do události tlačítka
Displaypřidejte následující kód Click zaDisplayEntry.Text = ReadString.DeleteEntry.enabled = TrueVytvořte obslužnou rutinu události pro tlačítko Click
DeleteEntrya 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 IfKdyž uživatel zobrazí položku,
EditEntrytlačítko se aktivuje. Přidejte následující kód Click do událostiDisplaytlačítka poDisplayEntry.Text = ReadString.EditEntry.Enabled = TrueVytvořte obslužnou rutinu události pro tlačítko Click
EditEntrya přidejte následující kód.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = TrueVytvořte obslužnou rutinu události pro tlačítko Click pomocí
SubmitEdita 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 DisplayEntryTextBox. Klikněte na Upravit položku. Položka se zobrazí v souboru EntryTextBox. Upravte položku v EntryTextBox 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í.