Controles constituintes

Os controles que compõem um controle de usuário ou controles membros como são denominados, são relativamente inflexíveis quando se trata de renderização de elementos gráficos personalizados. Todos os controles do Windows Forms manipulam sua própria renderização por meio de seu próprio OnPaint método. Como esse método é protegido, ele não está acessível para o desenvolvedor e, portanto, não pode ser impedido de ser executado quando o controle é pintado. Isso não significa, no entanto, que não é possível adicionar código para afetar a aparência dos controles membros. A renderização adicional pode ser realizada adicionando um manipulador de eventos. Por exemplo, suponha que você estivesse criando um com um UserControl botão chamado MyButton. Se você desejasse ter renderização adicional além do Buttonque foi fornecido pelo , você adicionaria código ao seu controle de usuário semelhante ao seguinte:

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.  
}  

Observação

Alguns controles do Windows Forms, como TextBox, são pintados diretamente pelo Windows. Nesses casos, o método nunca é chamado e, portanto, o OnPaint exemplo acima nunca será chamado.

Isso cria um método que é executado sempre que o evento MyButton.Paint é executado, conferindo, assim, uma representação gráfica adicional ao controle. Observe que isso não impede a execução de MyButton.OnPaint e, portanto, toda pintura normalmente executada por um botão será realizada além da sua pintura personalizada. Para obter detalhes sobre a tecnologia GDI+ e a renderização personalizada, consulte Criando imagens gráficas com GDI+. Se desejar ter uma representação exclusiva do seu controle, a melhor opção será criar um controle herdado e escrever código de renderização personalizada para ele. Para ver mais detalhes, consulte Controles desenhados pelo usuário.

Confira também