Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Con Windows Form è possibile creare nuovi controlli o modificare i controlli esistenti tramite ereditarietà. In questo articolo vengono evidenziate le differenze tra le modalità di creazione di nuovi controlli e vengono fornite informazioni su come scegliere un particolare tipo di controllo per il progetto.
Classe di controllo di base
La classe Control è la classe base per i controlli Windows Form. Fornisce l'infrastruttura necessaria per la visualizzazione visiva nelle applicazioni Windows Form e offre le funzionalità seguenti:
- Espone un handle di finestra.
- Gestisce il routing dei messaggi.
- Fornisce eventi del mouse e della tastiera e molti altri eventi dell'interfaccia utente.
- Fornisce funzionalità avanzate di layout.
- Contiene molte proprietà specifiche della visualizzazione visiva, ad esempio ForeColor, BackColor, Heighte Width.
Poiché gran parte dell'infrastruttura è fornita dalla classe di base, è relativamente semplice sviluppare controlli Windows Form personalizzati.
Creare un controllo personalizzato
È possibile creare tre tipi di controlli personalizzati: controlli utente, controlli estesi e controlli personalizzati. La tabella seguente consente di decidere quale tipo di controllo è necessario creare:
Se... | Crea un ... |
---|---|
|
Progettare un controllo utente ereditando da System.Windows.Forms.UserControl. |
|
Estendere un controllo ereditando da un controllo di Windows Forms specifico. |
|
Creare un controllo personalizzato ereditando da System.Windows.Forms.Control. |
Controlli utente
Un controllo utente è una raccolta di controlli Windows Form presentati come un singolo controllo all'utente. Questo tipo di controllo viene definito controllo composito . I controlli contenuti vengono detti controlli costitutivi .
Un controllo utente contiene tutte le funzionalità intrinseche associate a ognuno dei controlli Windows Form contenuti e consente di esporre e associare in modo selettivo le relative proprietà. Un controllo utente offre anche una grande quantità di funzionalità di gestione della tastiera predefinite senza ulteriori sforzi di sviluppo da parte dell'utente.
Ad esempio, è possibile creare un controllo utente per visualizzare i dati degli indirizzi dei clienti da un database. Questo controllo include un controllo DataGridView per visualizzare i campi del database, un BindingSource per gestire l'associazione a un'origine dati e un controllo BindingNavigator per spostarsi tra i record. È possibile esporre in modo selettivo le proprietà di data binding ed è possibile creare un pacchetto e riutilizzare l'intero controllo dall'applicazione all'applicazione. Per un esempio di questo tipo di controllo utente, vedere Procedura: Applicare attributi nei controlli Windows Form.
Per altre informazioni, vedere Panoramica del controllo utente.
Controlli estesi
È possibile derivare un controllo ereditato da qualsiasi controllo Windows Form esistente. Con questo approccio, è possibile mantenere tutte le funzionalità intrinseche di un controllo Windows Form e quindi estendere tale funzionalità aggiungendo proprietà, metodi o altre funzionalità personalizzate. Con questa opzione, è possibile eseguire l'override della logica di disegno del controllo di base e quindi estenderne l'interfaccia utente modificandone l'aspetto.
Ad esempio, è possibile creare un controllo derivato dal controllo Button che tiene traccia del numero di volte in cui un utente lo ha fatto clic.
In alcuni controlli è anche possibile aggiungere un aspetto personalizzato all'interfaccia utente grafica del controllo eseguendo l'override del metodo OnPaint della classe base. Per un pulsante esteso che tiene traccia dei clic, è possibile eseguire l'override del metodo OnPaint per chiamare l'implementazione di base di OnPainte quindi disegnare il conteggio dei clic in un angolo specifico dell'area client del controllo Button.
Per un esempio di estensione di un controllo, vedere Estendere un controllo esistente.
Controlli personalizzati
Un altro modo per creare un controllo consiste nel crearne uno sostanzialmente dall'inizio ereditando da Control. La classe Control fornisce tutte le funzionalità di base richieste dai controlli, inclusi gli eventi di gestione del mouse e della tastiera, ma non offre funzionalità specifiche del controllo o un'interfaccia grafica.
La creazione di un controllo ereditando dalla classe Control richiede più pensiero e impegno rispetto all'eredità da UserControl o da un controllo Windows Form esistente. Poiché per te è lasciata una grande quantità di implementazione, il controllo può avere una maggiore flessibilità rispetto a un controllo composito o esteso e puoi personalizzare il controllo in base alle tue esigenze esatte.
Per implementare un controllo personalizzato, è necessario scrivere codice per il OnPaint metodo del controllo , che controlla la modalità di disegno visivo del controllo. È inoltre necessario scrivere eventuali comportamenti specifici della funzionalità per il controllo. È anche possibile eseguire l'override del metodo WndProc e gestire direttamente i messaggi di Windows. Questo è il modo più potente per creare un controllo, ma per usare questa tecnica in modo efficace, è necessario avere familiarità con l'API Microsoft Win32.
Un esempio di controllo personalizzato è un controllo orologio che duplica l'aspetto e il comportamento di un orologio analogico. Il disegno personalizzato viene richiamato per fare in modo che le lancette dell'orologio si spostino in risposta agli eventi Tick da parte di un componente interno Timer.
Per altre informazioni, vedere Creare un semplice controllo personalizzato.
Controlli ActiveX
Anche se l'infrastruttura Windows Form è stata ottimizzata per ospitare controlli Windows Form, è comunque possibile usare controlli ActiveX. In Visual Studio è disponibile il supporto per questa attività. Per altre informazioni, vedere Procedura: Aggiungere controlli ActiveX a Windows Form.
Avvertimento
I controlli ActiveX non sono completamente supportati in .NET. I controlli ActiveX rimangono completamente supportati in .NET Framework.
Esperienza di progettazione personalizzata
Se è necessario implementare un'esperienza personalizzata in fase di progettazione, è possibile creare il proprio designer. Per i controlli compositi, derivare la classe progettata su misura dalla classe ParentControlDesigner o dalla classe DocumentDesigner. Per i controlli estesi e personalizzati, deriva la tua classe di progettazione personalizzata dalla classe ControlDesigner.
Usare il DesignerAttribute per associare il controllo al designer.
Le informazioni seguenti non sono aggiornate, ma potrebbero essere utili.
.NET Desktop feedback