Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tej instrukcji pokazano, jak otworzyć i odczytać plik przy użyciu klasy StreamReader, sprawdzić, czy plik jest używany, wyszukiwać ciąg znaków w pliku odczytanym za pomocą wystąpienia klasy StreamReader oraz zapisywać w pliku przy użyciu klasy StreamWriter.
Uwaga / Notatka
Na komputerze mogą być wyświetlane różne nazwy lub lokalizacje niektórych elementów interfejsu użytkownika programu Visual Studio w poniższych instrukcjach. Wersja programu Visual Studio i ustawienia, których używasz, określają te elementy. Aby uzyskać więcej informacji, zobacz Personalizowanie środowiska IDE.
Tworzenie aplikacji
Uruchom program Visual Studio i rozpocznij projekt, tworząc formularz, którego użytkownik może użyć do zapisania w wyznaczonym pliku.
Aby utworzyć projekt
W menu Plik wybierz pozycję Nowy projekt.
W okienku Nowy projekt kliknij pozycję Aplikacja systemu Windows.
W polu Nazwa wpisz
MyDiaryi kliknij przycisk OK.Program Visual Studio dodaje projekt do Eksploratora rozwiązań, a zostanie otwarty program Windows Forms Designer .
Dodaj kontrolki w poniższej tabeli do formularza i ustaw odpowiednie wartości dla ich właściwości.
| Obiekt | Właściwości | Wartość |
|---|---|---|
| Button |
Nazwa Tekst |
SubmitPrześlij wpis |
| Button |
Nazwa Tekst |
ClearWyczyść wpis |
| TextBox |
Nazwa Tekst Wieloliniowy |
EntryWprowadź coś. False |
Zapisywanie w pliku
Aby dodać możliwość zapisu do pliku za pośrednictwem aplikacji, użyj StreamWriter klasy . StreamWriter jest przeznaczony dla danych wyjściowych znaków w określonym kodowaniu, natomiast Stream jest klasą przeznaczoną do bajtowego wejścia i wyjścia. Użyj StreamWriter do zapisu informacji w standardowym pliku tekstowym. Aby uzyskać więcej informacji na temat klasy StreamWriter, zobacz StreamWriter.
Aby dodać funkcję pisania
W menu Widok wybierz pozycję Kod , aby otworzyć Edytor kodu.
Ponieważ aplikacja odwołuje się do przestrzeni nazw System.IO, dodaj następujące instrukcje na samym początku kodu, przed deklaracją klasy dla formularza, która rozpoczyna się
Public Class Form1.Imports System.IOPrzed zapisaniem w pliku należy utworzyć instancję klasy StreamWriter.
Z menu Widok wybierz pozycję Projektant, aby powrócić do projektanta formularzy systemu Windows. Kliknij dwukrotnie przycisk
Submit, aby utworzyć procedurę obsługi zdarzenia Click dla tego przycisku, a następnie dodaj następujący kod.Dim fw As StreamWriter
Uwaga / Notatka
Zintegrowane środowisko projektowe (IDE) programu Visual Studio powróci do Edytora kodu i umieści punkt wstawiania w programie obsługi zdarzeń, w którym należy dodać kod.
Aby zapisać do pliku, użyj metody Write klasy StreamWriter. Dodaj następujący kod bezpośrednio po pliku
Dim fw As StreamWriter. Nie musisz martwić się, że wyjątek zostanie zgłoszony, jeśli plik nie zostanie znaleziony, ponieważ zostanie utworzony, jeśli jeszcze nie istnieje.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 TryUpewnij się, że użytkownik nie może przesłać pustego wpisu, dodając następujący kod bezpośrednio po
Dim ReadString As String.If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then Entry.Text = "Please enter something." Return End IfPonieważ jest to dziennik, użytkownik będzie chciał przypisać datę do każdego wpisu. Wstaw następujący kod po
fw = New StreamWriter("C:\MyDiary.txt", True)ustawieniu zmiennejTodayna bieżącą datę.Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)Na koniec dołącz kod, aby wyczyścić element TextBox. Dodaj następujący kod do zdarzenia
Clearprzycisku Click.Entry.Text = ""
Dodawanie funkcji wyświetlania do dziennika
W tej sekcji dodasz funkcję, która wyświetla najnowszy wpis w pliku DisplayEntryTextBox. Można również dodać element ComboBox , który wyświetla różne wpisy i z których użytkownik może wybrać wpis do wyświetlenia w obiekcie DisplayEntryTextBox. Wystąpienie StreamReader klasy odczytuje element z klasy MyDiary.txt. Podobnie jak StreamWriter klasa, StreamReader jest przeznaczona do użycia z plikami tekstowymi.
W tej sekcji przewodnika dodaj kontrolki w poniższej tabeli do formularza i ustaw odpowiednie wartości dla ich właściwości.
| Kontrola | Właściwości | Wartości |
|---|---|---|
| TextBox |
Nazwa widoczne rozmiar Wieloliniowy |
DisplayEntryFalse120,60True |
| Button |
Nazwa Tekst |
DisplayEkran |
| Button |
Nazwa Tekst |
GetEntriesPobieranie wpisów |
| ComboBox |
Nazwa Tekst Włączono |
PickEntriesWybierz wpis False |
Aby wypełnić pole wyboru
Służy
PickEntriesComboBox do wyświetlania dat, w których użytkownik przesyła każdy wpis, aby użytkownik mógł wybrać wpis z określonej daty. Utwórz procedurę obsługi zdarzeń Click doGetEntriesprzycisku i dodaj następujący 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 = TrueAby przetestować kod, naciśnij F5, aby skompilować aplikację, a następnie kliknij pozycję Pobierz wpisy. Kliknij strzałkę listy rozwijanej w polu ComboBox, aby wyświetlić daty wprowadzenia.
Aby wybrać i wyświetlić poszczególne wpisy
Utwórz procedurę obsługi zdarzeń Click dla
Displayprzycisku i dodaj następujący 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 = ReadStringAby przetestować kod, naciśnij F5, aby skompilować aplikację, a następnie prześlij wpis. Kliknij pozycję Pobierz wpisy, wybierz wpis z listy ComboBox, a następnie kliknij pozycję Wyświetl. Zawartość wybranego wpisu jest wyświetlana w pliku
DisplayEntryTextBox.
Umożliwianie użytkownikom usuwania lub modyfikowania wpisów
Na koniec możesz uwzględnić dodatkowe funkcje umożliwiające użytkownikom usuwanie lub modyfikowanie wpisu przy użyciu przycisków DeleteEntry i EditEntry . Oba przyciski pozostają wyłączone, chyba że zostanie wyświetlony wpis.
Dodaj kontrolki w poniższej tabeli do formularza i ustaw odpowiednie wartości dla ich właściwości.
| Kontrola | Właściwości | Wartości |
|---|---|---|
| Button |
Nazwa Tekst Włączono |
DeleteEntryUsuń wpis False |
| Button |
Nazwa Tekst Włączono |
EditEntryEdytuj wpis False |
| Button |
Nazwa Tekst Włączono |
SubmitEditPrześlij edycję False |
Aby włączyć usuwanie i modyfikowanie wpisów
Dodaj następujący kod do zdarzenia
Displayprzycisku Click, poDisplayEntry.Text = ReadString.DeleteEntry.enabled = TrueUtwórz procedurę obsługi zdarzeń Click dla
DeleteEntryprzycisku i dodaj następujący 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 IfGdy użytkownik wyświetli wpis,
EditEntryprzycisk zostanie włączony. Dodaj następujący kod do Click zdarzeniaDisplayprzycisku poDisplayEntry.Text = ReadString.EditEntry.Enabled = TrueUtwórz procedurę obsługi zdarzeń Click dla
EditEntryprzycisku i dodaj następujący kod.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = TrueUtwórz procedurę obsługi zdarzeń Click dla
SubmitEditprzycisku i dodaj następujący 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
Aby przetestować kod, naciśnij F5, aby skompilować aplikację. Kliknij pozycję Pobierz wpisy, wybierz wpis, a następnie kliknij pozycję Wyświetl. Wpis pojawi się w pliku DisplayEntryTextBox. Kliknij pozycję Edytuj wpis. Wpis pojawi się w pliku EntryTextBox. Edytuj wpis w pliku EntryTextBox i kliknij pozycję Prześlij edycję. Otwórz plik, MyDiary.txt aby potwierdzić korektę. Teraz wybierz wpis i kliknij pozycję Usuń wpis. Gdy MessageBox prosi o potwierdzenie, kliknij OK. Zamknij aplikację i otwórz, MyDiary.txt aby potwierdzić usunięcie.