|
Per realizzare un editor di testi bisogna prima di tutto sapere come permettere all'utente di scegliere quale file aprire e in quale file
salvare ciò che verrà scritto. Queste semplici interazioni vengono amministrate da due controlli: OpenFileDialog e SaveFileDialog.
In questo breve capitolo esemplificherò il caso di un semplicissimo editor di testi, con le funzionalità base di apertura e salvataggio
dei file *.txt. Prima di procedere, ecco una lista delle proprietà più significative dei controlli in questione:
Esempio: Editor di testi
Dopo aver analizzato le proprietà importanti, si può procedere alla stesura del codice, ma prima una precisazione. Non avendo interfaccia
grafica sulla finestra, ma costituendo windows forms a sè stante, i controlli OpenFileDialog e SaveFileDialog possono essere inseriti nel
designer oppure inizializzati da codice indifferentemente (per quanto riguarda lo scopo). La diversità nell'usare un metodo piuttosto che un altro
sta nel fatto che il primo utilizza sempre lo stesso controllo, che potrebbe dare dei FileName errati in casi speciali, mentre il secondo
ne inizializza uno nuovo ad ogni evento, costando di più in termini di memoria. Nell'esempio seguente utilizzo il primo metodo, ma potrà
capitare che sfrutti anche il secondo in diverse altre occasioni.
Ora si aggiungano i controlli necessari:
- Button : Name = cmdOpen, Text = "Apri", Anchor = Bottom Or Left
- Button : Name = cmdSave, Text = "Salva", Anchor = Bottom Or Right
- Button : Name = cmdClose, Text = "Chiudi", Anchor = Bottom
- TextBox : Name = txtFile, Multiline = True, Anchor = Top Or Right Or Bottom Or Left
- OpenFileDialog : Name = FOpen, Filter = "File di testo|*.txt", FileName = "Testo"
- SaveFileDialog : Name = FSave, Filter = "File di testo|*.txt", DefaultExt = "txt"

Private Sub cmdOpen_Click(ByVal sender As Object, ByVal e As EventArgs)_
Handles cmdOpen.Click
'La funzione ShowDialog visualizza la finestra di dialogo e
'restituisce quale pulsante è stato premuto
'Se il pulsante corrisponde con OK, procediamo
If FOpen.ShowDialog = Windows.Forms.DialogResult.OK Then
'Apre un file in lettura
'Usa la proprietà FileName di FOpen, che restituisce il
'path del file selezionato: è sicuro che il file esista
'perchè l'utente ha premuto Ok e non ha chiuso la
'finestra di dialogo
Dim R As New IO.StreamReader(FOpen.FileName)
'Legge tutto il testo del file e lo deposita nella textbox
txtFile.Text = R.ReadToEnd
'Chiude il file
R.Close()
End If
End Sub
Private Sub cmdSve_Click(ByVal sender As Object, ByVal e As EventArgs) _
Handles cmdSave.Click
'Viene visualizzata la finestra di dialogo
If FSave.ShowDialog = Windows.Forms.DialogResult.OK Then
'Apre un file in scrittura, di ci si assicura che
'l'utente acconsenta alla sovrascrittura se già esistente
'mediante la proprietà OverwritePrompt
Dim W As New IO.StreamWriter(FSave.FileName)
'Scrive tutto il contenuto della textbox nel file
W.Write(txtFile.Text)
'Chiude il file
W.Close()
End If
End Sub
Private Sub cmdClose_Click(ByVal sender As Object, ByVal e As EventArgs) _
Handles cmdClose.Click
If txtFile.Text <> "" And _
FSave.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim W As New IO.StreamWriter(FSave.FileName)
W.Write(txtFile.Text)
W.Close()
End If
End Sub
Il sorgente può essere reso ancora più breve usando i metodi IO.File.WriteAllText e IO.File.ReadAllText. |
|