sabato 14 febbraio 2009

Una Semplice Gestione di una Rubrica su File di Testo

Ho preparato questo piccolo esempio di una gestione "non professionale" di una rubrica di contatti con lo scopo di mostrare l'utilizzo di StreamReader, StreamWriter, Using, ListView, OpenFileDialog, SaveFileDialog

Descrizione dell'applicazione

Si tratta di una gestione di rubrica telefonica / contatti che si appoggia su un normale file di testo.

Sul controllo ToolStrip sono  inseriti alcuni bottoni per il caricamento da file, il salvataggio su file, l'aggiunta di nuovi elementi alla ListView, la cancellazione di un elemento dalla ListView, la modifica di un elemento della ListView.

La gestione è consentita dal controllo ListView e da una serie di TextBox, ListView è generato a partire dal file di testo, le TextBox sono aggiornate nell'evento Listview.SelectIndexChanged.

Struttura del file di testo

Il file si prevede strutturato nel seguente modo:

  • Righe separate da un separatore di riga (Environment.NewLine) (0x0D + 0x0A che sono i caratteri previsti per i files ms-dos/windows)
  • Colonne della riga senza delimitatori separate dal carattere Tab (0x09)

Lettura del file di testo

Per la lettura è stato utilizzato un oggetto di tipo StreamReader.

Sulla prima riga del file di testo l'intestazione della colonna che andrà ad alimentare la collection ListBox.Columns, nelle righe successive tutti i dati dei contatti gestiti.

Alla pressione del bottone "carica" è utilizzato un oggetto di tipo OpenFileDialog, con ok si attiva il caricamento nella ListView.

Ciascun Item della collection Items è contiene a sua volta una collection di SubItems, semplificando si può descrivere come array che contiene tanti elementi quante sono le colonne presenti.

Scrittura del file di testo

Alla pressione del bottone "salva" è creato un oggetto di tipo SaveFileDialog, gli elementi della ListView sono riversati nel file di testo prescelto.

E' ovvio che sono salvate per prima le intestazioni delle colonne (collection Columns della ListView) e poi tutti gli items (uno per riga) e subitems (uno per colonna).

Sviluppi possibili

Direi che uno sviluppo possibile sia il posizionamento "da codice" degli elementi labels e  TextBox con il relativo collegamento dinamico in modo tale da consentire l'apertura e la gestione di un altro file di testo con intestazioni e/o campi diversi da quelli esemplificati.

L'esempio realizzato con Visual Basic
L'esempio realizzato con C#

Powered with Window Live Writer

Nessun commento: