Konstituerande kontroller
De kontroller som utgör en användarkontroll, eller konstituerande kontroller som de kallas, är relativt oflexibla när det gäller anpassad grafikrendering. Alla Windows Forms-kontroller hanterar sin egen rendering via sin egen OnPaint metod. Eftersom den här metoden är skyddad är den inte tillgänglig för utvecklaren och kan därför inte hindras från att köras när kontrollen ritas upp. Detta innebär dock inte att du inte kan lägga till kod för att påverka utseendet på de enskilda kontrollerna. Ytterligare återgivning kan utföras genom att lägga till en händelsehanterare. Anta till exempel att du redigerade en UserControl med en knapp med namnet MyButton
. Om du vill ha ytterligare återgivning utöver vad som angavs i Buttonlägger du till kod i användarkontrollen som liknar följande:
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.
}
Not
Vissa Windows Forms-kontroller, till exempel TextBox, målas direkt av Windows. I dessa fall anropas aldrig metoden OnPaint och därför anropas aldrig ovanstående exempel.
Detta skapar en metod som körs varje gång händelsen MyButton.Paint
körs, vilket lägger till ytterligare grafisk representation i din kontroll. Observera att detta inte hindrar körningen av MyButton.OnPaint
och därför kommer all målning som vanligtvis utförs av en knapp fortfarande att utföras utöver din anpassade målning. Mer information om GDI+-teknik och anpassad återgivning finns i Skapa grafiska bilder med GDI+. Om du vill ha en unik representation av din kontroll är det bästa sättet att skapa en ärvd kontroll och att skriva anpassad återgivningskod för den. Mer information finns i User-Drawn Controls.
Se även
.NET Desktop feedback