Controles com suporte para desenho do proprietário interno
Proprietário do desenho nos Windows Forms, que é também conhecido como desenho personalizado, é uma técnica para alterar a aparência visual de certos controles.
Observação
A palavra "controle" neste tópico é usada para significar classes que derivam de um Control ou Component.
Normalmente, o Windows manipula a pintura automaticamente usando configurações de propriedade, como BackColor para determinar a aparência de um controle. Com o desenho do proprietário, assumir o processo de pintura, alterando os elementos que não estão disponíveis usando propriedades de aparência. Por exemplo, muitos controles permitem que você defina a cor do texto que é exibido, mas você está limitado a uma única cor. Desenho do proprietário permite que você faça coisas como parte do texto de exibição em preto e parte em vermelho.
Na prática, o desenho do proprietário é semelhante ao desenho de gráficos em um formulário. Por exemplo, você poderia usar métodos gráficos em um manipulador para o evento do formulário para emular um ListBox
controle, mas você teria que escrever seu próprio código para lidar com toda a interação do Paint usuário. Com o desenho do proprietário, o controle usa seu código para desenhar seu conteúdo, mas caso contrário retém todos os seus recursos intrínsecos. Você pode usar métodos gráficos para desenhar cada item no controle ou personalizar alguns aspectos de cada item enquanto você usa a aparência padrão para outros aspectos de cada item.
Desenho do proprietário no Controle dos Windows Forms
Para executar o desenho do proprietário na controles que oferecem suporte a ele, você normalmente define uma propriedade e manipular um ou mais eventos.
A maioria dos controles têm de desenho do proprietário que suporte uma propriedade OwnerDraw
ou DrawMode
que indica se o controle será aumentará seu evento ou eventos de desenho quando ela pinta a si mesma.
Controles que não têm uma propriedade OwnerDraw
ou DrawMode
, incluem o DataGridView
controle, que fornece eventos de desenho que ocorrem automaticamente e o ToolStrip
controle, que é desenhado usando uma classe de renderização externa que tem seus próprios eventos relacionados ao desenho.
Há muitos tipos diferentes de eventos de desenho, mas ocorre um evento típico de desenho para desenhar um único item em um controle. O manipulador de eventos recebe um EventArgs
objeto que contém informações sobre o item que está sendo desenhado e ferramentas que você pode usar para desenhá-lo. Por exemplo, esse objeto normalmente contém o número de índice do item dentro de sua coleção pai, um que indica os limites de exibição do item e um RectangleGraphics objeto para chamar métodos de pintura. Em alguns casos, o EventArgs
objeto fornece informações adicionais sobre o item e os métodos que você pode chamar para pintar alguns aspectos do item por padrão, como a tela de fundo ou um retângulo de foco.
Para criar um controle reutilizável que contém as personalizações desenhados pelo proprietário, crie uma nova classe que deriva de uma classe de controle que dá suporte ao desenho do proprietário. Em vez de manipular eventos de desenho, incluir o código de desenho do proprietário em substituições de método ou métodos apropriados de On
EventName na nova classe. Certifique-se de que você chamar o método ou métodos da classe base On
EventName nesse caso, para que os usuários de seu controle possam manipular eventos de desenho do proprietário e fornecer personalização adicional.
O Windows Forms a seguir controla desenho do proprietário em todas as versões do .NET Framework:
MenuItem (usado por MainMenu e ContextMenu)
Os controles a seguir oferecem suporte ao desenho do proprietário somente no .NET Framework 2.0:
Os controles a seguir oferecem suporte ao desenho do proprietário e são novos no .NET Framework 2.0:
As seções a seguir fornecem detalhes adicionais para cada um desses controles.
Controles de Caixa de Combinação e Caixa de listagem
Os ListBox controles e ComboBox permitem que você desenhe itens individuais no controle em um único tamanho ou em tamanhos variados.
Observação
Embora o CheckedListBox controle seja derivado do controle, ele não oferece suporte ao ListBox desenho do proprietário.
Para desenhar cada item do mesmo tamanho, defina a DrawMode
propriedade como OwnerDrawFixed e manipule o DrawItem
evento.
Para desenhar cada item usando um tamanho diferente, defina a DrawMode
propriedade e OwnerDrawVariable manipule os MeasureItem
eventos e DrawItem
. O evento MeasureItem
permite indicar o tamanho de um item antes do evento DrawItem
ocorrer para aquele item.
Para obter mais informações, incluindo exemplos de código, consulte os seguintes tópicos:
Componente do MenuItem
O MenuItem componente representa um único item de menu em um MainMenu ou ContextMenu componente.
Para desenhar um MenuItem, defina sua OwnerDraw
propriedade como true
e manipule seu DrawItem
evento. Para personalizar o tamanho do item de menu antes do evento DrawItem
ocorrer, identifique os eventos MeasureItem
do item.
Para obter mais informações, incluindo exemplos de código, consulte os seguintes tópicos de referência:
Controle TabControl
O TabControl controle permite que você desenhe guias individuais no controle. O desenho do proprietário afeta apenas as guias; O TabPage conteúdo não é afetado.
Para desenhar cada guia em um TabControl, defina a DrawMode
propriedade como OwnerDrawFixed e manipule o DrawItem
evento. Esse evento ocorre uma vez para cada guia somente quando a guia estiver visível no controle.
Para obter mais informações, incluindo exemplos de código, consulte os seguintes tópicos de referência:
Componente ToolTip
O ToolTip componente permite que você desenhe a dica de ferramenta inteira quando ela for exibida.
Para desenhar um ToolTip, defina sua OwnerDraw
propriedade como true
e manipule seu Draw
evento. Para personalizar o tamanho do antes que o evento ocorra, manipule o Popup
Draw
evento e defina a ToolTipSize propriedade no manipulador de ToolTip eventos.
Para obter mais informações, incluindo exemplos de código, consulte os seguintes tópicos de referência:
Controle ListView
O ListView controle permite que você desenhe itens individuais, subitens e cabeçalhos de coluna no controle.
Para habilitar o controle de desenho do proprietário, defina a propriedade OwnerDraw
para true
.
Para desenhar cada item no controle, identifique o evento DrawItem
.
Para desenhar cada subitem ou cabeçalho de coluna no controle quando a View propriedade é definida como Details, manipule os DrawSubItem
eventos e DrawColumnHeader
.
Para obter mais informações, incluindo exemplos de código, consulte os seguintes tópicos de referência:
Controle TreeView
O TreeView controle permite que você desenhe nós individuais no controle.
Para desenhar somente o texto exibido em cada nó, defina a DrawMode
propriedade como OwnerDrawText e manipule o evento para desenhar o DrawNode
texto.
Para desenhar todos os elementos de cada nó, defina a DrawMode
propriedade e OwnerDrawAll manipule o DrawNode
evento para desenhar os elementos necessários, como texto, ícones, caixas de seleção, sinais de mais e menos e linhas conectando os nós.
Para obter mais informações, incluindo exemplos de código, consulte os seguintes tópicos de referência:
Controle DataGridView
O DataGridView controle permite que você desenhe células e linhas individuais no controle.
Para desenhar células individuais, identifique o evento CellPainting
.
Para desenhar linhas individuais ou elementos de linhas, identifique um ou ambos os eventos RowPrePaint
e RowPostPaint
. O evento RowPrePaint
ocorre antes das células em uma linha serem pintadas e o evento RowPostPaint
ocorre depois que as células são pintadas. Você pode identificar ambos os eventos e o evento CellPainting
para pintar a tela de fundo de linha, células individuais e primeiro plano linha separadamente ou você pode fornecer personalizações específicas em que você precisa deles e use a exibição padrão para outros elementos da linha.
Para obter mais informações, incluindo exemplos de código, consulte os seguintes tópicos:
Como personalizar a aparência de células no controle DataGridView dos Windows Forms
Como personalizar a aparência de linhas no controle DataGridView dos Windows Forms
Controle ToolStrip
ToolStrip e os controles derivados permitem que você personalize qualquer aspecto de sua aparência.
Para fornecer renderização personalizada para controles, defina a Renderer
propriedade de um , ToolStripManager, ToolStripPanelou para ToolStrip um objeto e manipule um ToolStripToolStripRenderer
ou ToolStripContentPanel mais dos muitos eventos de desenho fornecidos pela ToolStripRenderer
classe. Como alternativa, defina uma propriedade para uma Renderer
instância de sua própria classe derivada de ToolStripRenderer
, ToolStripProfessionalRendererou que implementa ou ToolStripSystemRenderer substitui métodos EventName específicosOn
.
Para obter mais informações, incluindo exemplos de código, consulte os seguintes tópicos:
Confira também
.NET Desktop feedback