Continuiamo la nostra breve analisi delle nuove caratteristiche della Windows form di VB .NET. Una delle cose più importanti da notare è che la proprietà Caption è stata rinominata in Text.
Più in generale, le proprietà Caption di tutti i controlli sono state sostituite dalla proprietà Text; a parte il nome diverso, comunque, le due proprietà sono assolutamente analoghe.
Abbiamo detto nella precedente Lezione che una Windows form è una classe: è quindi possibile creare oggetti di tipo form e lavorare con essi come con qualunque altro oggetto. In particolare, quando si vuole aprire una form sopra un altro, è necessario prima dichiarare un oggetto che abbia come tipo la form da visualizzare. Cerchiamo di spiegare meglio questo concetto con un esempio. Dopo aver creato una nuova soluzione (vedi "Utilizzo di classi in VB .NET"), aggiungiamo un secondo form al progetto corrente, oltre a quello che viene creato di default (e che ha nome Form1). Per fare questo, fare clic con il tasto destro del mouse sul nome del progetto all'interno del Solution Explorer e scegliere Add (Aggiungi), quindi selezionare Add Windows form (Aggiungi Windows form). Confermare le impostazioni della finestra di dialogo Add New Item (Aggiungi nuovo elemento) con un clic sul pulsante Open (Apri).
Il nome del nuovo form è Form2. Ora aggiungiamo un pulsante sul Form1: l'oggetto CommandButton è stato rinominato in Button; impostiamone la proprietà Text su "Apri secondo form". Facciamo quindi doppio clic sul pulsante per generare la routine che gestisce l'evento clic e scriviamo il codice seguente:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim frm As New Form2()
'Visualizza il Form2.
frm.ShowDialog()
End Sub
La prima dichiarazione definisce un nuovo oggetto frm di tipo Form2 e, tramite la parola chiave New, ne crea una nuova istanza. L'istruzione successiva richiama il metodo ShowDialog di frm: esso corrisponde, nelle precedenti versioni di Visual Basic, al metodo Show con il parametro vbModal, cioè visualizza il Form2 e blocca l'esecuzione di Form1 finché Form2 non viene chiuso. Invece, se vi vuole visualizzare il Form2 senza fermare Form1, è necessario richiamare il metodo Show di frm.
Potete scaricare un esempio che mostra l'uso di ShowDialog e Show facendo clic qui.
L'evento QueryUnload è stato rinominato in Closing. Mentre in VB6, per annullare la chiusura della form, era necessario impostare su true la variabile Cancel che faceva parte degli argomenti di QueryUnload, per ottenere lo stesso effetto in VB .NET si deve agire sulla proprietà e.Cancel, come potete osservare dall'esempio seguente:
Private Sub Form1_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
'Annulla la chiusura del form.
e.Cancel = true
End Sub
Per chiudere una form è necessario richiamare il metodo Close della form stessa. Ad esempio, per fare in modo che premendo il pulsante Button1 la finestra venga chiusa, si deve scrivere il codice seguente:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
La Windows form introduce numerose nuove proprietà, consentendo di realizzare facilmente operazioni che prima erano possibili sono utilizzando le API di Windows, come impostare le dimensioni massima e minima della finestra (per determinare le quali sono disponibili rispettivamente le proprietà Maximumsize e Minimunsize). Non essendo possibile analizzarle tutte, ci limiteremo ad illustrare le più importanti e quelle che hanno subito cambiamenti rispetto alla versione precedenti di Visual Basic.
Innanzi tutto, le proprietà AcceptButton e CancelButton consentono di impostare il pulsante il cui codice si vuole venga eseguito, rispettivamente, quando si premono i tasti Invio oppure Esc. In pratica, queste due proprietà sostituiscono le precedenti Accept e Cancel del controllo CommandButton. Per impostare tali proprietà, fare clic sulla freccia posta sulla destra di AcceptButton oppure CancelButton nella finestra delle Proprietà: verrà visualizzata una lista da cui è possibile selezionare il pulsante che si vuole associare.
La proprietà borderStyle è stata rinominata in FormborderStyle, ma a parte il cambiamento di nome non ha subito altre modifiche.
La proprietà Menu consente di impostare un menu per il form. Anche il menu e i comandi di menu, infatti, in VB .NET sono trattati come oggetti. Questa proprietà viene esposta perché è possibile definire più oggetti di tipo Menu nell'applicazione, visualizzando di volta in volta quello opportuno, ad esempio in risposta a determinate azioni dell'utente. I menu in VB .NET saranno trattati nelle Lezioni successive.
Opacity consente di impostare la percentuale di trasparenza della form. La proprietà StartUpPosition è stata rinominata in StartPosition; la proprietà CenterOwner ora si chiama CenterParent. transparentKey permette di definire un colore che apparirà trasparente quando verrà disegnato sulla form.
Ci sono poi altre nuove proprietà supportate dalla form e dai controlli standard. Analizziamo anche in questo caso le più significative.
La proprietà BackgroundImage consente di impostare un'immagine di sfondo. Se il file selezionato ha dimensioni inferiori a quelle del form, verrà automaticamente affiancato fino a coprire l'intera finestra.
La proprietà Cursor sostituisce la proprietà MousePointer. Per impostare un cursore è necessario utilizzare la classe Cursors, come mostrato nell'esempio seguente:
Me.Cursor = Cursors.WaitCursor 'Imposta la clessidra.
Me.Cursor = Cursors.Default 'Ripristina il puntatore predefinito.
Una proprietà completamente nuova è ContextMenu, con cui è possibile associare un menu contestuale alla form, cioè un menu che viene automaticamente richiamato quando si fa clic sulla form con il tasto destro del mouse.
Ora che abbiamo preso familiarità con la Windows form, possiamo analizzare le novità dei controlli standard di VB .NET, che saranno trattate a partire dalla prossima Lezione.