Partilhar via


Controlos de Constituintes

Os controles que compõem um controle de usuário, ou controles constituintes como são chamados, são relativamente inflexíveis quando se trata de renderização gráfica personalizada. Todos os controles Windows Forms manipulam sua própria renderização por meio de seu próprio método OnPaint. Como esse método é protegido, ele não é acessível para o desenvolvedor e, portanto, não pode ser impedido de executar quando o controle é pintado. Isso não significa, no entanto, que você não pode adicionar código para afetar a aparência dos controles constituintes. A renderização adicional pode ser realizada adicionando um manipulador de eventos. Por exemplo, suponha que estivesse a criar um UserControl com um botão chamado MyButton. Se você desejasse ter renderização adicional além do que foi fornecido pelo Button, 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 OnPaint nunca é chamado e, portanto, o exemplo acima nunca será chamado.

Isso cria um método que é executado sempre que o evento MyButton.Paint é executado, adicionando assim representação gráfica adicional ao seu controle. Note que isso não impede a execução de MyButton.OnPaint, e assim toda a pintura normalmente realizada por um botão ainda será realizada além da sua pintura personalizada. Para obter detalhes sobre a tecnologia GDI+ e renderização personalizada, consulte o Criando imagens gráficas com GDI+. Se você deseja ter uma representação exclusiva do seu controle, seu melhor curso de ação é criar um controle herdado e escrever código de renderização personalizado para ele. Para obter detalhes, consulte User-Drawn Controls.

Ver também