Cerca Totem's Lair su Facebook



< Precedente
Il Namespace My
Successivo >



Il namespace My è una novità di Visual Basic 2005: è stato introdotto per fornire un accesso facilitato a classi del framework utili usate molto spesso, diminuendo così il codice necessario e di conseguenza in tempo impiegato a scriverlo. My contiene oggetti singleton aggiornati durante la creazione dell'applicazione nell'ambiente di sviluppo: ad esempio My.Settings viene popolato con le risorse e le impostazioni aggiunte dall'utente, oppure i membri di My.Forms sono aggiunti ogniqualvolta viene aggiunto un form all'applicazione e costituiscono una scorciatoia per richiamarli senza definirne altre istanze. Ecco una panoramica dei membri di My:

My.Application
Ecco una lista dei membri più significativi di questo oggetto: Fra le altre cose, questa classe espone anche degli eventi interessanti: Startup e Shutdown vengono lanciati rispettivamente quando l'applicazione viene aperta o chiusa, ma possono facilmente essere sostituiti dai più semplici FormLoad e FormClosing; interessanti sono invece gli eventi StartupNextInstance, lanciato quando viene avviata un'altra istanza dell'applicazione, UnhandledException, generato ogniqualvolta si riscontra un errore non gestito (e quindi utilissimo per non far apparire la famosa messagebox di errore critico) e NetworkAvaiabilityChanged, che riporta un cambiamento nello stato di usabilità della rete (ossia quando ci si connette o disconnette). Gestire correttamente tali eventi non può che portare benefici alla solidità e all'efficienza del programma.


My.Computer
Ad eccezione di Name, che restituisce il nome del computer, tutte le altre proprietà esposte sono oggetti figli i quali a loro volta mettono a disposizione altre funzionalità: in questo namespace vengono riassunti i metodi più utili sul piano dell'audio, del filesystem, del registro di sistema e del recupero informazioni. Ecco una lista di quasi tutte le proprietà (Ports è stata tralasciata poichè raramente usata, mentre Registry non verrà analizzato, per ovvi motivi):

My.User
Espone poche proprietà, la più importante delle quali è Name, che restituisce il nome dell'utente attualmente loggato. Ci sono altre funzioni come IsInRole che permettono anche di definire il ruolo dell'utente (ad esempio Amministratore o Proprietario, oppure un diverso stato se appartiene a un dato gruppo di computer).


My.Resources
È un contenitore in grado di immagazzinare qualsiasi file o risorsa: immagini, video, suoni, file di dati, di testo, stringhe e altro ancora. Tutto quello che viene immesso nell'applicazione attraverso questo wrapper è inglobato nell'assembly finale, mentre durante lo sviluppo del software, tali file vengono temporaneamente salvati nella cartella Resources del progetto. È possibile aggiungere una nuova risorsa dalle proprietà del progetto (Nome progetto->Click col destro->Properties), come mostrato in questa immagine:


Tramite il menù in alto a sinistra nella finestra delle risorse si può scegliere quale tipo di dati aggiungere: la lista al centro visualizza risorse per tipo, quindi in una volta saranno visibili solo stringhe, solo immagini, solo suoni, eccetera... Il pulsante a fianco, "Add Resource" permette di aggiungere una risorsa di quel tipo; le altre sottovoci presenti sono delle scorciatoie per risorse usate spesso come stringhe, immagini o file di testo. Una volta aggiunta una risorsa tramite il designer, il compilatore riscrive automaticamente tutto il codice nascosto di My.Resources, rendendo disponibili come proprietà tutti i dati immessi. A seconda del tipo specificato, tale proprietà sarà restituita in maniera differente:

My.Settings
Per mezzo di questo oggetto è possibile salvare le impostazioni dell'applicazione che devono permanere tra due sessioni distinte. I settaggi vengono salvati can il supporto dell'XML e della serializzazione in una cartella dal nome chilomentrico all'interno della directory dell'utente corrente. Il nome è stabilito usando le informazioni dell'assembly e il suo strong name. All'avvio, tutti i campi vengono automaticamente impostati dal programma, che si preoccupa prima del caricamento del form, di recuperare il file XML e leggerne il contenuto. In questo risiede la comodità di My.Settings, poichè concede al programmatore la libertà di dedicarsi alla scrittura del codice significativo, delegando poi alla macchina l'esecuzione di compiti noiosi quali il caricamento delle impostazioni.
Anche in questo caso, si opera su My.Settings attraverso una finestra nella sezione Properties del progetto. La schermata è semplice e intuitiva, e permette di creare non solo valori di tipi semplici come String, Boolean o Double, ma anche tipi complessi, sia value che reference, anche definiti dallo sviluppatore: il requisito minimo è che siano serializzabili (come si vedrà in seguito, di default, tutti gli oggetti sono serializzabili). Un'applicazione diffusa e molto richiesta per la sua semplicità consiste nel poter salvare valori associati a controlli. Ad esempio, si vuole che il font, il testo e il colore di un pulsante vengano conservati tra una sessione e l'altra. In questo caso, ma anche negli altri, il lavoro da fare non risulta affatto lungo o complesso. Per prima cosa bisogna creare tre nuovi valori attraverso l'interfaccia My.Settings dal pannello di controllo delle proprietà di progetto: uno di tipo Font, uno String e uno Color. Ecco:


(Si faccia caso alla finestra delle proprietà nell'angolo a destra: anche da lì, come se fosse un normale controllo, si possono modificare i campi di My.Settings, eventualmente specificando un commento in Description) Lo scope User o Application riguarda la finalità per cui il campo viene creato: in genere le proprietà User sono modificabili, mentre quelle Application sono ReadOnly. Ora che sono stati creati gli opportuni valori, bisogna collegarli alle rispettive proprietà del pulsante (ovviamente dopo aver creato anche il pulsante). Selezionato il pulsante, bisogna espandere, nella finestra delle proprietà, la voce "(Application Settings)". Al suo intero sarà presente soltanto la voce "Text", alla quale si assegnerà il valore ButtonText, tramite la piccola finestra di dialogo che apparirà cliccandoci sopra. Per le altre due proprietà, ForeColor e Font, bisogna cliccare sul pulsantino coi tre puntini di sospensione sull'elemento appena sopra, "(PropertyBinding)": verrà visualizzata una griglia completa di tutte le proprietà, dando quindi la possibilità di collegare ciascuna al corrispettivo valore. Risultato:


Ora, cambiando un valore di My.Settings, cambierà anche l'aspetto del controllo. Le impostazioni vengono caricate automaticamente all'inizio, ma per salvare bisogna o richiamare il metodo My.Settings.Save oppure impostare a True la proprietà My.Application.SaveMySettingsOnExt.
Per quanto riguarda gli altri metodi di questa classe, è necessario annoverare solo Save, Reload e Reset: dei primi due è facilmente intuibile la funzione; il terzo, invece, reimposta al loro valore di default tutti i valori che vengono dichiarati con Persist = True. Inoltre, sono presenti anchq quattro utili eventi: SettingsChanging (generato prima che venga modificata un'impostazione), PropertyChanged (dopo che è stato cambiato il valore di un'impostazione), SettingsLoaded (all'avvio o dopo aver chiamato i metodi Reload o Reset) e SettingsSaving (prima che vengano salvate le impostazioni). Bisogna notare che gli eventi generati prima che avvenga qualcosa possono anche modificare il comportamento dell'azione oppure anche annullarla, sempre ispezionando le possibilità offerte dai membri di e.


My.Forms e My.WebServices
Espongono le istanze di default di tutti i Form o di tutti i Web Service definiti nel progetto: il secondo tipo di oggetto non è trattato in questa guida.



< Precedente
Successivo >