Eventi
Creare app e agenti di intelligenza artificiale
17 mar, 21 - 21 mar, 10
Partecipa alla serie meetup per creare soluzioni di intelligenza artificiale scalabili basate su casi d'uso reali con altri sviluppatori ed esperti.
Iscriviti subitoQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Il disegno proprietario in Windows Form, noto anche come disegno personalizzato, è una tecnica per modificare l'aspetto visivo di determinati controlli.
Nota
La parola "control" in questo argomento viene usata per indicare le classi che derivano da Control o Component.
In genere, Windows gestisce automaticamente il disegno usando le impostazioni delle proprietà, ad esempio BackColor per determinare l'aspetto di un controllo. Con la funzionalità di disegno proprietario, si assume il controllo del processo di pittura, modificando gli elementi di aspetto che non sono disponibili utilizzando le proprietà. Ad esempio, molti controlli consentono di impostare il colore del testo visualizzato, ma si è limitati a un singolo colore. Il disegno proprietario consente di eseguire operazioni come visualizzare parte del testo in nero e parte in rosso.
In pratica, il disegno del proprietario è simile al disegno di grafica su un modulo. Ad esempio, è possibile usare metodi grafici in un gestore per l'evento Paint del modulo per emulare un controllo ListBox
, ma è necessario scrivere codice personalizzato per gestire tutte le interazioni dell'utente. Con il disegno del proprietario, il controllo usa il tuo codice per disegnare il contenuto, ma continua a mantenere tutte le sue capacità intrinseche. È possibile utilizzare metodi grafici per disegnare ogni elemento nel controllo o per personalizzare alcuni aspetti di ogni elemento mentre si utilizza l'aspetto predefinito per altri aspetti di ogni elemento.
Per eseguire il disegno personalizzato nei controlli che lo supportano, in genere si imposta una proprietà e si gestiscono uno o più eventi.
La maggior parte dei controlli che supportano il disegno personalizzato ha una proprietà OwnerDraw
o DrawMode
che indica se il controllo attiverà l'evento o gli eventi correlati al disegno quando viene dipinto.
I controlli che non dispongono di una proprietà OwnerDraw
o DrawMode
includono il controllo DataGridView
, che fornisce eventi di disegno che si verificano automaticamente e il controllo ToolStrip
, che viene disegnato utilizzando una classe di rendering esterna che dispone di eventi correlati al disegno.
Esistono molti tipi diversi di eventi di disegno, ma si verifica un tipico evento di disegno per disegnare un singolo elemento all'interno di un controllo . Il gestore eventi riceve un oggetto EventArgs
che contiene informazioni sull'elemento disegnato e sugli strumenti che è possibile utilizzare per disegnare. Ad esempio, questo oggetto contiene in genere il numero di indice dell'elemento all'interno della raccolta padre, un Rectangle che indica i limiti di visualizzazione dell'elemento e un oggetto Graphics per richiamare i metodi di pittura. Per alcuni eventi, l'oggetto EventArgs
fornisce informazioni aggiuntive sull'elemento e sui metodi che è possibile chiamare per disegnare alcuni aspetti dell'elemento per impostazione predefinita, ad esempio lo sfondo o un rettangolo di messa a fuoco.
Per creare un controllo riutilizzabile che contiene le personalizzazioni disegnate dal proprietario, creare una nuova classe che deriva da una classe di controllo che supporta il disegno proprietario. Invece di gestire gli eventi di disegno, includere il codice di disegno proprietario negli override per il On
metodo o i metodi EventName appropriati nella nuova classe. Assicurarsi di chiamare il metodo o i metodi On
EventName della classe base, in modo che gli utenti del vostro controllo possano gestire gli eventi di disegno proprietario e offrire ulteriori possibilità di personalizzazione.
I controlli Windows Forms seguenti supportano il disegno personalizzato in tutte le versioni di .NET Framework.
MenuItem (usato da MainMenu e ContextMenu)
I controlli seguenti supportano il disegno proprietario solo in .NET Framework 2.0:
I controlli seguenti supportano il disegno del proprietario e sono nuovi in .NET Framework 2.0:
Nelle sezioni seguenti vengono forniti dettagli aggiuntivi per ognuno di questi controlli.
I controlli ListBox e ComboBox consentono di disegnare singoli elementi nel controllo in un'unica dimensione o in dimensioni variabili.
Nota
Anche se il controllo CheckedListBox è derivato dal controllo ListBox, non supporta il disegno del proprietario.
Per disegnare ogni elemento con le stesse dimensioni, impostare la proprietà DrawMode
su OwnerDrawFixed e gestire l'evento DrawItem
.
Per disegnare ogni elemento utilizzando una dimensione diversa, impostare la proprietà DrawMode
su OwnerDrawVariable e gestire sia gli eventi MeasureItem
che DrawItem
. L'evento MeasureItem
consente di indicare le dimensioni di un elemento prima che si verifichi l'evento DrawItem
per tale elemento.
Per altre informazioni, inclusi gli esempi di codice, vedere gli argomenti seguenti:
Il componente MenuItem rappresenta una singola voce di menu in un componente MainMenu o ContextMenu.
Per disegnare un MenuItem, imposta la sua proprietà OwnerDraw
a true
e gestisci l'evento DrawItem
. Per personalizzare le dimensioni della voce di menu prima che si verifichi l'evento DrawItem
, gestire l'evento MeasureItem
dell'elemento.
Per altre informazioni, inclusi esempi di codice, vedere gli argomenti di riferimento seguenti:
Il controllo TabControl consente di disegnare singole linguette nel controllo. Il disegno del proprietario influisce solo sui tab; il contenuto del TabPage non è interessato.
Per disegnare ogni scheda in TabControl, impostare la proprietà DrawMode
su OwnerDrawFixed e gestire l'evento DrawItem
. Questo evento si verifica una volta per ogni scheda solo quando la scheda è visibile nel controllo .
Per altre informazioni, inclusi esempi di codice, vedere gli argomenti di riferimento seguenti:
Il componente ToolTip consente di disegnare l'intero ToolTip quando viene visualizzato.
Per disegnare un ToolTip, imposta la sua proprietà OwnerDraw
su true
e gestisci il suo evento Draw
. Per personalizzare la dimensione del ToolTip prima che si verifichi l'evento Draw
, gestire l'evento Popup
e impostare la proprietà ToolTipSize nel gestore dell'evento.
Per altre informazioni, inclusi esempi di codice, vedere gli argomenti di riferimento seguenti:
Il controllo ListView consente di disegnare elementi singoli, sottoelementi e intestazioni di colonna nel controllo.
Per abilitare la gestione proprietaria del disegno nel controllo, impostare la proprietà OwnerDraw
su true
.
Per disegnare ciascun elemento nel controllo, gestisci l'evento DrawItem
.
Per disegnare ogni sottoelemento o intestazione di colonna nel controllo quando la proprietà View è impostata su Details, gestire gli eventi DrawSubItem
e DrawColumnHeader
.
Per altre informazioni, inclusi esempi di codice, vedere gli argomenti di riferimento seguenti:
Il controllo TreeView consente di disegnare singoli nodi nel controllo .
Per disegnare solo il testo visualizzato in ogni nodo, impostare la proprietà DrawMode
su OwnerDrawText e gestire l'evento DrawNode
per disegnare il testo.
Per disegnare tutti gli elementi di ogni nodo, impostare la proprietà DrawMode
su OwnerDrawAll e gestire l'evento DrawNode
per disegnare gli elementi necessari, ad esempio testo, icone, caselle di controllo, segni più e meno e linee che collegano i nodi.
Per altre informazioni, inclusi esempi di codice, vedere gli argomenti di riferimento seguenti:
Il controllo DataGridView consente di disegnare singole celle e righe all'interno di esso.
Per disegnare singole celle, gestire l'evento CellPainting
.
Per disegnare singole righe o elementi di righe, gestire uno o entrambi gli eventi RowPrePaint
e RowPostPaint
. L'evento RowPrePaint
si verifica prima che vengano disegnate le celle di una riga e l'evento RowPostPaint
si verifica dopo che le celle vengono disegnate. È possibile gestire sia gli eventi che l'evento CellPainting
per disegnare lo sfondo delle righe, le singole celle e il primo piano separatamente oppure è possibile fornire personalizzazioni specifiche in cui sono necessarie e utilizzare la visualizzazione predefinita per altri elementi della riga.
Per altre informazioni, inclusi gli esempi di codice, vedere gli argomenti seguenti:
Procedura: Personalizzare l'aspetto delle celle nel controllo DataGridView di Windows Form
Procedura: Personalizzare l'aspetto delle righe nel controllo DataGridView di Windows Form
ToolStrip e i controlli derivati consentono di personalizzare ogni aspetto del loro aspetto.
Per fornire il rendering personalizzato per i controlli di ToolStrip, impostare la proprietà Renderer
di un ToolStrip, ToolStripManager, ToolStripPanelo ToolStripContentPanel su un oggetto ToolStripRenderer
e gestire uno o più eventi di disegno forniti dalla classe ToolStripRenderer
. In alternativa, impostare una proprietà Renderer
su un'istanza di una propria classe derivata da ToolStripRenderer
, ToolStripProfessionalRenderero ToolStripSystemRenderer che implementa o sovrascrive metodi specifici On
EventName.
Per altre informazioni, inclusi gli esempi di codice, vedere gli argomenti seguenti:
Feedback su .NET Desktop feedback
.NET Desktop feedback è un progetto di open source. Selezionare un collegamento per fornire feedback:
Eventi
Creare app e agenti di intelligenza artificiale
17 mar, 21 - 21 mar, 10
Partecipa alla serie meetup per creare soluzioni di intelligenza artificiale scalabili basate su casi d'uso reali con altri sviluppatori ed esperti.
Iscriviti subitoFormazione
Percorso di apprendimento
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization