Formanty składników
Kontrolki tworzące kontrolkę użytkownika lub kontrolki składowe, które są nazywane, są stosunkowo nieelastyczne, jeśli chodzi o niestandardowe renderowanie grafiki. Wszystkie kontrolki Windows Forms obsługują własne renderowanie za pomocą własnej OnPaint metody. Ponieważ ta metoda jest chroniona, nie jest dostępna dla dewelopera, dlatego nie można zapobiec wykonywaniu operacji podczas malowania kontrolki. Nie oznacza to jednak, że nie można dodać kodu, aby wpłynąć na wygląd kontrolek składowych. Dodatkowe renderowanie można wykonać, dodając procedurę obsługi zdarzeń. Załóżmy na przykład, że tworzysz obiekt UserControl z przyciskiem o nazwie MyButton
. Jeśli chcesz mieć dodatkowe renderowanie wykraczające poza to, co zostało dostarczone przez Buttonprogram , dodaj kod do kontrolki użytkownika podobny do następującego:
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.
}
Uwaga
Niektóre kontrolki Windows Forms, takie jak TextBox, są malowane bezpośrednio przez system Windows. W tych przypadkach OnPaint metoda nigdy nie jest wywoływana, a zatem powyższy przykład nigdy nie zostanie wywołany.
Spowoduje to utworzenie metody, która jest wykonywana za każdym razem, gdy MyButton.Paint
zdarzenie jest wykonywane, dodając w ten sposób dodatkową graficzną reprezentację do kontrolki. Należy pamiętać, że nie zapobiega to wykonaniu MyButton.OnPaint
elementu , a tym samym wszystkie obrazy zwykle wykonywane za pomocą przycisku będą nadal wykonywane oprócz obrazu niestandardowego. Aby uzyskać szczegółowe informacje na temat technologii GDI+ i renderowania niestandardowego, zobacz Tworzenie obrazów graficznych za pomocą interfejsu GDI+. Jeśli chcesz mieć unikatową reprezentację kontrolki, najlepszym sposobem działania jest utworzenie odziedziczonej kontrolki i napisanie niestandardowego kodu renderowania. Aby uzyskać szczegółowe informacje, zobacz Kontrolki rysowane przez użytkownika.
Zobacz też
.NET Desktop feedback