Home Page Home Page Articoli Costruzione di un controllo personalizzato (Windows Control)

Costruzione di un controllo personalizzato (Windows Control)

In questo articolo trovate le istruzioni passo passo per poter costruire un oggetto/controllo personalizzato da poter utilizzare nelle vostre applicazioni windows.
Autore: David De Giacomi Livello:
Bottoni, liste, ecc.ecc.
Visual Studio .NET mette a disposizione dello sviluppatore una discreta quantità di controlli base, come pulsanti (Button) , caselle di testo (Text Box), barre di scorrimento (Scrollbar), e così via.
Lo sviluppatore professionista però oltre ad utilizzare comunemente questi oggetti grazie alla loro estrema facilità d’uso e flessibilità, necessita anche di costruirne di nuovi per adattarli alle proprie esigenze e per aumentare il grado di interattività con l’utente migliorando notevolmente l’interfaccia grafica.
Naturalmente i controlli che si possono costruire possono essere molto semplici come quelli elencati qui sopra oppure più avanzati come il selettore della data oppure i famosi selettori di colore presenti in ogni software di grafica.

Un selettore di colori
Un selettore di colori


Questo articolo è solo l’inizio ed è molto basilare ma è stato scritto con lo scopo di far comprendere allo sviluppatore novizio fino a dove ci spingere nello sviluppo di un programma.

All’opera!
Lanciamo come solito Visual Studio .NET e creiamo un nuovo progetto con linguaggio C#.
Il tipo di progetto da selezionare è “Windows Control Library” così come rappresentato qui sotto.

Nuovo Progetto
Nuovo Progetto


Diamo un nome al progetto “CustomControl” e poi premiamo il pulsante Ok.
Il progetto contiene 2 file: il solito AssemblyInfo.cs e UserControl1.cs che è il nostro controllo.
Nella parte di “Design” vediamo un rettangolo vuoto. Questa è l’area che utilizzeremo per rappresentare il nostro controllo.

Ciccate una volta al centro del controllo in modo da far apparire le sue proprietà nella finestra relativa.
Ora, nella finestra proprietà dovrebbe esserci un’icona che rappresenta un fulmine che ci permette di accedere all’elenco degli eventi del nostro controllo. Premete sul fulmine (nell’immagine sotto è quello cerchiato in rosso).
Come vedete la lista degli eventi associati al controllo è molto lunga. A noi in questo momento serve solo l’evento Paint.

L’elenco degli eventi associate al controllo
L’elenco degli eventi associate al controllo


Fate doppio click sul nome Paint. Visual Studio creerà automaticamente il codice necessario a gestire l’evento. Nostro compito sarà quello di scrivere il codice all’interno dell’evento.
Visto che l’obbiettivo finale è rappresentare un’ellisse all’interno del controllo, scriviamo questa riga di codice.


private void UserControl1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
e.Graphics.DrawEllipse(new Pen(Color.Blue,1),0,0,this.Width-1,this.Height-1);
}


L’unica istruzione aggiunta a questo evento disegna un’ellisse di colore Blu con lo spessore di 1 pixel all’interno del controllo. Per disegnare un’ellisse Windows ha bisogno delle coordinate di un rettangolo dentro cui disegnarla.
Nel nostro caso questo rettangolo è proprio l’area del controllo, quindi le coordinate dell’angolo in alto a sinistra saranno (0,0) e quelle dell’angolo in basso a destra sono (this.Width-1, this.Height-1).
Il puntatore “this” rappresenta in questo caso il nostro controllo e lo utilizziamo per farci restituire la sua larghezza (Width) e altezza (Height).
Ad entrambe le dimensioni viene sottratta un unità (-1) perché considerato il fatto che l’ellisse ha uno spessore di 1 pixel verrebbe disegnata all’esterno del controllo.

Per poter testare il controllo è necessaria l’aggiunta di un’ulteriore riga di codice.
Dobbiamo indicare a Windows che il controllo dev’essere ridisegnato ogni volta che viene ridimensionato. Vi ricordo che ogni volta che ridimensioniamo un controllo, o finestra, viene invocato l’evento Paint.

Premiamo nuovamente l’icona per la lista degli eventi (il fulmine utilizzato precedentemente) e facciamo doppio click sull’evento Load e aggiungiamo la seguente riga di codice.


private void UserControl1_Load(object sender, System.EventArgs e)
{
SetStyle(ControlStyles.ResizeRedraw, true);
}


Questa istruzione imposta ad un certo stile, nel nostro caso ResizeRedraw, un valore che può essere vero o falso. Noi impostiamo a vero visto che è necessario ridisegnare il controllo durante un ridimensionamento.

In questo momento con solo due righe di codice abbiamo un controllo personalizzato funzionante.

Proviamo ora il controllo…
Con Visual Studio .NET si può lavorare con più progetti contemporaneamente che fanno parte di una struttura più grande chiamata Soluzione (Solution). Questi file hanno estensione .sln.

Tramite il menù scegliamo File->Aggiungi Progetto->Nuovo Progetto e selezioniamo un progetto con linguaggio C# ma questa volta un’applicazione Windows (Windows Application) che verrà aggiunta al nostro progetto. Diamo questo nome all’applicazione “ApplicazioneProva”.

A questo punto dovremmo avere di fronte la tipica finestra vuota (Form) in cui possiamo inserire il nostro nuovo controllo.
Prima di fare ciò però è necessario dare una prima compilazione al progetto in modo da creare la dll relativa al nostro controllo.
Per comodità utilizziamo il menù Build->Build Solution.

Se aprite la Toolbox degli strumenti e scorrete la lista fino in fondo noterete con sorpresa che c’è il nostro controllo chiamato UserControl1!

La Toolbox con il nostro controllo
La Toolbox con il nostro controllo


Trascinatelo all’interno della finestra e vedrete apparire la famosa ellisse.
Provate anche a ridimensionarlo e vedete che l’ellisse viene ridisegnata ogni volta in modo da mantenere costantemente aggiornate le sue dimensioni.
Questo dovrebbe essere l’output del progetto.

L’applicazione di prova in esecuzione con il controllo
L’applicazione di prova in esecuzione con il controllo
Voto medio articolo: 2.8 Numero Voti: 6

File allegati


David De Giacomi

David De Giacomi

MVP Program Logo Approda al mondo dell'informatica nell' Aprile del 1994. Un amico gli fa conoscere il Quick Basic del DOS. E' cosi che inizia la sua attività di sviluppatore. Prosegue il suo percorso con altri linguaggi (Visual Basic, Pascal, Java, ANSI C), fino ad arrivare a .NET. Per un certo periodo affianca all'attività ... Profilo completo

Articoli collegati

Creare menù personalizzati con icone con .NET
Le applicazioni più evolute come Office sono state le prime a far uso di menù con le icone. Visual Studio .NET non ha un componente menù così evoluto, ed è necessario quindi implementarlo manualmente, vediamo come si può fare.
Autore: Stefano Passatordi | Difficoltà: | Commenti: 1 | Voto:
Come creare un DateTimePicker personalizzato (ExtDtp)
In questo Tutorial viene spiegato come è possibile creare un controllo personalizzato (Custom Control) con Visual Studio .NET. In particolare verrà creata una versione del DateTimePicker con funzionalità aggiuntive rispetto a quello classico offerto da Microsoft.
Autore: Gianpiero Carrozzo | Difficoltà: | Voto:
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5