Sei sulla pagina 1di 31

Manipolazione grafica degli elementi

La TextBox
Uno dei controlli maggiormente potenziati in VB .Net, rispetto alle versioni precedenti, la TextBox. La prima cosa da far notare che stato finalmente superato il limite dei 64.000 caratteri circa visualizzabili: ora possibile, teoricamente, inserire fino a 2 GB di informazioni in una singola casella di testo. Una delle propriet pi interessanti, peraltro comune a tutti i controlli, la propriet Anchor, che consente di adattare il controllo alle dimensioni della finestra. Per impostarla, fare clic sulla freccia visualizzata a destra di tale propriet: comparir una piccola finestra in cui selezionare, con un clic

La TextBox
del mouse, i bordi della finestra a cui si vuole ancorare il controllo.

L'impostazione predefinita Top, Left, cio il controllo ancorato al bordo sinistro in alto: in pratica l'oggetto non viene adattato alle dimensioni della finestra, ma resta fisso nella sua posizione.

La TextBox
Proviamo ad inserire una TextBox sulla form, in una posizione qualsiasi, e ad impostare la sua propriet Anchor su Top, Left, Right. Se ora proviamo a ridimensionare il form, anche in fase di progettazione, noteremo che la casella di testo si allunga o si riduce in accordo alle dimensioni della finestra. Analogamente, se posizioniamo la TextBox nella parte bassa del form e impostiamo Anchor su Bottom, Left, essa rimarr sempre alla stessa distanza dal bordo inferiore della finestra, qualunque dimensione essa abbia.

La TextBox
Passando alle propriet specifiche della TextBox, AcceptsReturn e AcceptsTab consentono di stabilire se il controllo deve accettare, rispettivamente, i caratteri Invio e Tab. Ad esempio, la prima propriet utile quando si ha un controllo multilinea e si vuole fare in modo che, premendo il tasto Invio, venga inserita una nuova linea di testo; se, invece, AcceptsReturn False (impostazione predefinita), premendo Invio verr attivato il pulsante di default della form. AcceptsTab deve essere impostata su true se si vuole dare la possibilit di inserire caratteri di tabulazione nella TextBox, altrimenti la pressione del tasto Tab sposter lo stato attivo sul controllo successivo.

La TextBox
Altra propriet importante Lines, che consente di definire le righe di testo della casella, nel caso in cui la propriet MultiLine sia impostata su true. Facendo clic sul pulsante con i tre puntini in corrispondenza della propriet Lines, verr visualizzata la finestra di dialogo String Collection Editor, in cui possibile digitare le righe che si vogliono visualizzare, separate da Invio. Per quanto riguarda i metodi, citiamo qui solo i pi interessanti, rimandando alla consultazione della Guida in linea per l'elenco completo.

La TextBox
Il metodo AppendText aggiunge il testo specificato alla fine del contenuto nella TextBox. I metodi Copy, Cut e Paste, rispettivamente, permettono di copiare, tagliare ed incollare il testo: le operazioni con gli Appunti di Windows, che prima si realizzavano tramite l'oggetto Clipboard, ora sono accessibili come metodi della TextBox. Il metodo Focus, comune a tutti i controlli, consente di spostare lo stato attivo sull'oggetto su cui viene richiamato. Il metodo Undo, infine, annulla l'ultima operazione e, di fatto, equivale alla pressione della combinazione di tasti CtrL+Z.

La TextBox
Vediamo ora quali sono i principali eventi del controllo TextBox e come si gestiscono. L'evento Change stato rinominato in TextChanged. Ma gli eventi su cui vale la pena spendere qualche parola sono KeyDown, KeyUp e KeyPress: analizziamoli ricordando che le considerazioni che verranno fatte sono valide per tutti i controlli che possono generare gli eventi KeyDown, KeyUp e KeyPress. Per quanto riguarda i primi due, nelle precedenti versioni di Visual Basic essi avevano come parametri KeyCode e Shift, che permettevano di sapere quale carattere era stato premuto e, controllando il valore di Shift, se in combinazione con

La TextBox
ALT, CtrL o SHIFT; inoltre, scrivendo all'interno dell'evento KeyCode = 0, era possibile annullare la digitazione. Tutte queste informazioni, in VB .NET, sono contenute nel parametro e, che di tipo System.Windows.Forms.KeyEventArgs Esempio:
Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp End Sub

La TextBox
In particolare, per quanto riguarda gli eventi KeyUp e KeyDown, l'oggetto espone le propriet KeyCode, Alt, Control e Shift, utili per sapere quale carattere stato premuto e se in combinazione con i tasti ALT, CtrL o SHIFT. Considerate l'esempio seguente:
Private Sub TextBox1_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyUp e.KeyCode = Keys.F And e.Shift = true Then MsgBox("Premuta la combinazione SHIFT+F.") End If End Sub If

La TextBox
Keys un'enumerazione di tutti i caratteri della tastiera e pu quindi essere utilizzato per sapere quale carattere stato premuto: in questo esempio si controlla se e.KeyCode uguale a Keys.F, cio se stato premuto il carattere F. e.Shift = true, invece, usato per sapere se insieme al tasto F stato premuto anche SHIFT. Il parametro e dell'evento KeyPress, invece, espone tra le altre le propriet KeyChar e Handled; la prima contiene la rappresentazione in formato stringa del carattere premuto, mentre l'altra consente di dire a Visual Basic che

La TextBox
l'evento KeyPress gestito, cio che non si vuole visualizzare il carattere premuto nella TextBox perch sono state fatte altre elaborazioni: in pratica, equivale a porre KeyAscii = 0 nell'evento KeyPress delle precedenti versioni di Visual Basic.

PictureBox, Panel e GroupBox


Per visualizzare un'immagine all'interno di una form possibile utilizzare solo il controllo PictureBox. Innanzi tutto, la propriet Picture, utilizzata per impostare l'immagine da visualizzare nel controllo, stata rinominata in Image; per quanto riguarda i formati, stato aggiunto il supporto ai file PNG ed alle GIF animate. La propriet Autosize stata sostituita da sizeMode, che rispetto alla prima offre alcune possibilit in pi: Normal l'impostazione predefinita; StretchImage adatta le dimensioni dell'immagine perch possa essere interamente

PictureBox, Panel e GroupBox


visualizzata all'interno del controllo; Autosize ridimensiona la PictureBox sulla base della grandezza dell'immagine; CenterImage visualizza l'immagine centrata nella PictureBox. Per impostare la propriet Image necessario impostarla su un oggetto di tipo System.Drawing.Bitmap: allo scopo possibile utilizzare il metodo FromFile della classe appena citata. Ad esempio, l'istruzione:
PictureBox1.Image = System.Drawing.Bitmap.FromFile ("C:ImmaginiCascate.bmp")

PictureBox, Panel e GroupBox


Questo codice Visualizza nella PictureBox l'immagine C:ImmaginiCascate.bmp. Per eliminare l'immagine, sufficiente porre la propriet Image uguale a Nothing. Il controllo Panel molto semplice da utilizzare. Si tratta di un controllo contenitore, cio consente di definire un'area al cui interno possibile inserire altri oggetti, che verranno logicamente considerati insieme, come facenti parte di un unico gruppo: ad esempio, nascondendo un controllo Panel, verranno automaticamente nascosti anche tutti i controlli in esso contenuti.

PictureBox, Panel e GroupBox


Nelle precedenti versioni di Visual Basic, per raggruppare insieme alcuni oggetti era necessario inserirli all'interno di una PictureBox, che quindi aveva una doppia valenza (visualizzatore di immagini e contenitore). Per inserire oggetti in un controllo Panel sufficiente selezionarli e trascinarli all'interno del controllo stesso: non pi indispensabile crearli direttamente nel contenitore, come accadeva con la PictureBox; analogamente, se si vuole portare un oggetto all'esterno del Panel, basta selezionarlo e spostarlo al di fuori di esso.

PictureBox, Panel e GroupBox


Se si elimina un controllo Panel, verranno automaticamente eliminati anche tutti gli oggetti al suo interno. Le considerazioni fatte fin qui relativamente al Panel si applicano anche al GroupBox, controllo che prende il posto del vecchio Frame.

PictureBox, Panel e GroupBox


Anch'esso un controllo contenitore: la differenza rispetto al Panel che il GroupBox definisce un'area delimitata e visibile in fase di esecuzione, mentre i bordi del controllo Panel sono invisibili a runtime.

Menu e ToolTip in VB .NET


La gestione dei menu in Visual Basic .NET radicalmente diversa rispetto a quella delle versioni precedenti. Per inserire un menu in un'applicazione VB .NET si deve utilizzare l'oggetto MainMenu, disponibile nella casella degli strumenti standard. Aggiungendo il controllo MainMenu in una form, comparir un'area nella parte bassa della finestra in cui verr inserita l'icona relativa.

Menu e ToolTip in VB .NET


Si tratta di una novit di VB .NET: i controlli non visibili in fase di esecuzione, ad esempio il Timer, non vengono pi visualizzati nella form, ma in una zona separata, cos da evitare appesantimenti inutili. Dopo aver inserito il MainMenu, sotto la barra del titolo della form apparir la barra dei menu, come si pu vedere nell'immagine. Ecco un'altro cambiamento rispetto alle versioni precedenti di Visual Basic: per definire i comandi dei menu ora basta scriverli all'interno del menu stesso in fase di progettazione.

Menu e ToolTip in VB .NET


Ad esempio, proviamo a fare clic sulla comando Type Here (scrivi qui) nella barra dei menu e a scrivere File: questo sufficiente per creare un menu di nome File.

Appariranno ora nuove voci nella barra dei menu, tutte contrassegnate da Type Here: al posto di ognuna di esse possibile inserire un comando di menu.

Menu e ToolTip in VB .NET


Come nelle versioni precedenti di Visual Basic, per inserire una barra di separazione nel menu basta creare una nuova voce e impostare la sua etichetta su - (segno meno); in alternativa, anche possibile fare clic con il tasto destro del mouse all'interno del menu e selezionare Insert Separator (Inserisci separatore). Per spostare un comando da una posizione ad un'altra basta trascinare l'elemento del menu nella posizione desiderata. Facendo clic su un comando, nella finestra delle Propriet compariranno le propriet della voce di menu.

Menu e ToolTip in VB .NET


Checked consente di visualizzare un segno di spunta a sinistra del nome del menu; RadioCheck, novit di VB .NET, deve essere impostato su true se si vuole che al posto del segno di spunta venga visualizzato un radio button (pu essere usato, ad esempio, per indicare la scelta corrente in un insieme di opzioni). Shortcut consente di definire una scorciatoia da tastiera per il comando; possibile decidere se visualizzare o meno tale combinazione di tasti agendo sulla propriet ShowShortcut.

Menu e ToolTip in VB .NET


Per scrivere il codice da eseguire quando si seleziona un comando dal menu, fare doppio clic sul comando stesso: si aprir l'editor del codice all'interno della routine che gestisce l'evento Click sulla voce di menu. Altro evento importante Select, che viene generato quando il puntatore del mouse di sposta su una voce del menu.

Menu e ToolTip in VB .NET


L'altro tipo di menu disponibile in VB .NET il menu contestuale: nelle applicazioni per Windows esso viene visualizzato quando si fa clic con il tasto destro del mouse su di un controllo. Nelle precedenti versioni di Visual Basic, per mostrare questo tipo di menu era necessario aggiungerlo alla barra dei menu standard, quindi richiamarlo con il metodo PopupMenu ad esempio all'interno dell'evento MouseUp, in modo da intercettare la pressione del tasto destro del mouse. In VB .NET il metodo PopupMenu non esiste pi: per associare un menu contestuale ad un controllo necessario creare un oggetto di tipo ContextMenu.

Menu e ToolTip in VB .NET


Anch'esso, al pari del MainMenu, una volta inserito nella form viene visualizzato nella parte bassa della finestra di progettazione; anche la fase di creazione delle voci di menu e di impostazioni delle propriet la medesima. Se in una form sono presenti sia un MainMenu sia uno o pi ContextMenu, facendo clic sull'uno o sull'altro il corrispondente layout dei menu verr visualizzato sotto la barra del titolo, anche se, in fase di esecuzione, la barra dei menu sar quella impostata nel MainMenu.

Menu e ToolTip in VB .NET


Dopo aver creato un menu contestuale, necessario associarlo ad uno o pi controlli. Per fare questo si deve selezionare il controllo a cui si vuole collegare il menu e impostare la sua propriet ContextMenu sul nome del menu contestuale interessato.

Fatto questo, ogni volta che si far clic con il tasto destro del mouse sul controllo verr visualizzato il menu contestuale; non pi necessario scrivere nemmeno una riga di codice per ottenere questo effetto.

Menu e ToolTip in VB .NET


L'evento Popup del ContextMenu viene generato prima della visualizzazione del menu contestuale. Pu essere utilizzato, ad esempio, nel caso di un menu associato a pi controlli, per adattare i comandi in base all'oggetto su cui stato fatto il clic.

Menu e ToolTip in VB .NET


Passiamo ora al controllo ToolTip, utilizzato per visualizzare un breve messaggio descrittivo quando si posiziona il mouse su un oggetto per alcuni istanti. Anch'esso una novit di Visual Basic .NET: nelle precedenti versioni di VB, infatti, per assegnare un tooltip era sufficiente impostare la propriet ToolTipText. In VB .NET, per definire un tooltip necessario inserire prima nella form un oggetto di tipo ToolTip; anch'esso, come il MainMenu e il ContextMenu, si posiziona nella parte bassa della finestra di progettazione.

Menu e ToolTip in VB .NET


Inserito il ToolTip, tra le propriet dei controlli della form ne apparir una nuova, Tooltip on <nome oggetto ToolTip>: il messaggio specificato in questa propriet verr utilizzato come tooltip. La decisione di aggiungere un controllo a parte per visualizzare i tooltip dovuta al fatto che, cos facendo, possibile impostarne alcune propriet, come il ritardo di visualizzazione, che prima non erano disponibili. In particolare, InitialDelay consente di specificare l'intervallo di tempo, in millisecondi, che deve passare da quando il puntatore del mouse si sposta su un controllo alla

Menu e ToolTip in VB .NET


visualizzazione del messaggio descrittivo; AutoPopDelay indica per quanti millisecondi deve essere visualizzato il tooltip. La propriet AutomaticDelay ha lo stesso scopo di InitialDelay, con la differenza che sulla base del valore in essa specificato, verranno automaticamente impostate anche le propriet AutoPopDelay, InitialDelay e ReshowDelay (quest'ultima propriet specifica quanti millisecondi devono passare prima di visualizzare il nuovo tooltip quando il puntatore del mouse si sposta da un controllo ad un altro).