Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa procedura dettagliata illustra come aprire e leggere un file usando la StreamReader classe , verificare se si accede a un file, cercare una stringa all'interno di un file letto con un'istanza della StreamReader classe e scrivere in un file usando la StreamWriter classe .
Annotazioni
Il computer potrebbe visualizzare nomi o percorsi diversi per alcuni degli elementi dell'interfaccia utente di Visual Studio nelle istruzioni seguenti. L'edizione di Visual Studio disponibile e le impostazioni usate determinano questi elementi. Per altre informazioni, vedere Personalizzazione dell'IDE.
Creazione dell'applicazione
Avviare Visual Studio e iniziare il progetto creando un modulo che l'utente può usare per scrivere nel file designato.
Per creare il progetto
Scegliere Nuovo progetto dal menu File.
Nel riquadro Nuovo progetto fare clic su Applicazione Windows.
Nella casella Nome digitare
MyDiary
e fare clic su OK.Visual Studio aggiunge il progetto a Esplora soluzioni e Windows Forms Designer viene aperto.
Aggiungere i controlli nella tabella seguente al form e impostare i valori corrispondenti per le relative proprietà.
oggetto | Proprietà | Valore |
---|---|---|
Button |
Nome Testo |
Submit Invia partecipazione |
Button |
Nome Testo |
Clear Cancella campo |
TextBox |
Nome Testo multilinea |
Entry Immettere qualcosa. False |
Scrittura nel file
Per aggiungere la possibilità di scrivere in un file tramite l'applicazione, usare la StreamWriter classe . StreamWriter è progettato per l'output dei caratteri in una particolare codifica, mentre la classe Stream è progettata per l'input e l'output dei byte. Utilizzare StreamWriter per scrivere righe di informazioni in un file di testo standard. Per altre informazioni sulla StreamWriter classe , vedere StreamWriter.
Per aggiungere funzionalità di scrittura
Scegliere Codice dal menu Visualizza per aprire l'editor di codice.
Poiché l'applicazione fa riferimento allo System.IO spazio dei nomi, aggiungere le istruzioni seguenti all'inizio del codice, prima della dichiarazione di classe per il modulo, che inizia
Public Class Form1
.Imports System.IO
Prima di scrivere nel file, è necessario creare un'istanza di una StreamWriter classe .
Scegliere Progettazione dal menu Visualizza per tornare a Progettazione Windows Form. Fare doppio clic sul
Submit
pulsante per creare un Click gestore eventi per il pulsante e quindi aggiungere il codice seguente.Dim fw As StreamWriter
Annotazioni
L'IDE (Integrated Development Environment) di Visual Studio tornerà all'editor di codice e posizionerà il punto di inserimento all'interno del gestore eventi in cui è necessario aggiungere il codice.
Per scrivere nel file, usare il Write metodo della StreamWriter classe . Aggiungere il codice seguente direttamente dopo
Dim fw As StreamWriter
. Non è necessario preoccuparsi che venga generata un'eccezione se il file non viene trovato, perché verrà creato se non esiste già.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
Assicurati che l'utente non possa inviare un campo vuoto aggiungendo il codice seguente direttamente dopo
Dim ReadString As String
.If (Entry.Text = "" Or Entry.Text = "Please enter something.") Then Entry.Text = "Please enter something." Return End If
Poiché si tratta di un diario, l'utente vuole assegnare una data a ogni voce. Inserire il codice seguente dopo
fw = New StreamWriter("C:\MyDiary.txt", True)
per impostare la variabileToday
sulla data corrente.Dim Today As DateTime Today = Now fw.Write(CStr(Today)) fw.Write(ControlChars.CrLf)
Infine, collegare il codice per cancellare il TextBox. Aggiungere il codice seguente all'evento
Clear
del Click pulsante.Entry.Text = ""
Aggiunta di funzionalità di visualizzazione al diario
In questa sezione viene aggiunta una funzionalità che visualizza la voce più recente in DisplayEntry
TextBox. È anche possibile aggiungere un oggetto ComboBox che visualizza varie voci e da cui un utente può selezionare una voce da visualizzare in DisplayEntry
TextBox. Un'istanza della classe StreamReader legge da MyDiary.txt
. Come la StreamWriter classe , StreamReader è destinato all'uso con i file di testo.
Per questa sezione della procedura dettagliata, aggiungere i controlli nella tabella seguente nel modulo e impostare i valori corrispondenti delle loro proprietà.
Controllo | Proprietà | Valori |
---|---|---|
TextBox |
Nome Visibile Dimensione multilinea |
DisplayEntry False 120,60 True |
Button |
Nome Testo |
Display Schermo |
Button |
Nome Testo |
GetEntries Ottenere voci |
ComboBox |
Nome Testo abilitato |
PickEntries Seleziona una voce False |
Per popolare la casella combinata
L'
PickEntries
ComboBox viene utilizzato per visualizzare le date in cui un utente invia ogni elemento, in modo che l'utente possa selezionare un elemento da una determinata data. Creare un Click gestore eventi alGetEntries
pulsante e aggiungere il codice seguente.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
Per testare il codice, premere F5 per compilare l'applicazione e quindi fare clic su Ottieni elementi. Fare clic sulla freccia a discesa in ComboBox per visualizzare le date di immissione.
Per scegliere e visualizzare singole voci
Creare un Click gestore eventi per il
Display
pulsante e aggiungere il codice seguente.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
Per testare il codice, premere F5 per compilare l'applicazione e quindi inviare un invio. Fare clic su Recupera voci, selezionare una voce da ComboBoxe quindi fare clic su Visualizza. Il contenuto della voce selezionata viene visualizzato in
DisplayEntry
TextBox.
Abilitazione degli utenti a eliminare o modificare le voci
Infine, è possibile includere funzionalità aggiuntive che consentono agli utenti di eliminare o modificare una voce usando i pulsanti DeleteEntry
e EditEntry
. Entrambi i pulsanti rimangono disabilitati a meno che non venga visualizzata una voce.
Aggiungere i controlli nella tabella seguente al form e impostare i valori corrispondenti per le relative proprietà.
Controllo | Proprietà | Valori |
---|---|---|
Button |
Nome Testo abilitato |
DeleteEntry Elimina elemento False |
Button |
Nome Testo abilitato |
EditEntry Modifica elemento False |
Button |
Nome Testo abilitato |
SubmitEdit Invia modifica False |
Per abilitare l'eliminazione e la modifica delle voci
Aggiungi il seguente codice all'evento
Display
del pulsante Click, dopoDisplayEntry.Text = ReadString
.DeleteEntry.enabled = True
Creare un Click gestore eventi per il
DeleteEntry
pulsante e aggiungere il codice seguente.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
Quando un utente visualizza una voce, il
EditEntry
pulsante si attiva. Aggiungere il codice seguente all'evento Click delDisplay
pulsante dopoDisplayEntry.Text = ReadString
.EditEntry.Enabled = True
Creare un Click gestore eventi per il
EditEntry
pulsante e aggiungere il codice seguente.Entry.Text = DisplayEntry.Text SubmitEdit.Enabled = True
Creare un Click gestore eventi per il
SubmitEdit
pulsante e aggiungere il codice seguenteDim 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
Per testare il codice, premere F5 per compilare l'applicazione. Fare clic su Recupera voci, selezionare una voce e quindi fare clic su Visualizza. La voce viene visualizzata in DisplayEntry
TextBox. Clicca su Modifica voce. La voce viene visualizzata in Entry
TextBox. Modifica la voce nel Entry
TextBox e clicca su Invia modifica. Aprire il MyDiary.txt
file per confermare la correzione. Ora selezionare una voce e fare clic su Elimina voce. Quando le MessageBox richiedono conferma, fare clic su OK. Chiudere l'applicazione e aprire MyDiary.txt
per confermare l'eliminazione.