Controlli costitutivi

I controlli che costituiscono un controllo utente, detti anche controlli costitutivi, offrono scarsa flessibilità in termini di rendering personalizzato della grafica. Tutti i controlli Windows Form gestiscono il proprio rendering tramite il proprio OnPaint metodo. Poiché questo metodo è protetto, non è accessibile allo sviluppatore e quindi non è possibile evitarne l'esecuzione quando il controllo viene disegnato. Ciò non implica tuttavia che non sia possibile aggiungere codice per modificare l'aspetto dei controlli costitutivi. Per eseguire un altro rendering, è possibile aggiungere un gestore eventi. Si supponga, ad esempio, di creare un oggetto UserControl con un pulsante denominato MyButton. Se si vuole eseguire un rendering aggiuntivo oltre a quanto fornito da Button, aggiungere codice al controllo utente in modo simile al seguente:

Public Sub MyPaint(ByVal sender as Object, e as PaintEventArgs) Handles _  
   MyButton.Paint  
   'Additional rendering code goes here  
End Sub  
// Add the event handler to the button's Paint event.  
MyButton.Paint +=
   new System.Windows.Forms.PaintEventHandler (this.MyPaint);  
// Create the custom painting method.  
protected void MyPaint (object sender,
System.Windows.Forms.PaintEventArgs e)  
{  
   // Additional rendering code goes here.  
}  

Nota

Alcuni controlli Windows Form, ad esempio TextBox, vengono disegnati direttamente da Windows. In questi casi, il OnPaint metodo non viene mai chiamato e quindi l'esempio precedente non verrà mai chiamato.

Viene quindi creato un metodo eseguito ogni volta che viene eseguito l'evento MyButton.Paint, aggiungendo in tal modo un'altra rappresentazione grafica al controllo. Si noti che ciò non impedisce l'esecuzione di MyButton.OnPaint e quindi tutti i disegni eseguiti normalmente da un pulsante continueranno a essere eseguiti in aggiunta al disegno personalizzato. Per informazioni dettagliate sulla tecnologia GDI+ e sul rendering personalizzato, vedere Creazione di immagini grafiche con GDI+. Per avere una rappresentazione univoca del controllo, è consigliabile creare un controllo ereditato per cui scrivere il codice di rendering personalizzato. Per informazioni dettagliate, vedere Controlli creati dall'utente.

Vedi anche