Compartilhar via


Controles com suporte de desenho de proprietário interno

Desenho proprietário na Windows Forms, que também é conhecido como desenho personalizado, é uma técnica para alterar a aparência visual de certos controles.

ObservaçãoObservação

A palavra "controle" Este tópico é usado para indicar a classes que derivam de uma Control ou Component.

Normalmente, Windows manipula pintura automaticamente usando as configurações de propriedade, como BackColor para determinar a aparência de um controle. Com o desenho do proprietário, você assumir o processo de pintura, alterando elementos que não estão disponíveis usando propriedades de aparência. Por exemplo, muitos controles permitem que você definir a cor do texto que é exibido, mas você está limitado a uma única cor. Desenho proprietário lhe permite fazer coisas como exibir a parte do texto em preto e parte em vermelho.

Na prática, o desenho proprietário é semelhante ao desenho de elementos gráficos em um formulário. Por exemplo, você pode usar métodos gráficos em um manipulador para o formulário Paint evento para emular um ListBox o controle, mas você precisaria escrever seu próprio código para manipular todos os interação do usuário. Com o desenho do proprietário, o controle usa o seu código para desenhar o 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 para personalizar alguns aspectos de cada item enquanto você usa a aparência padrão para outros aspectos de cada item.

Desenho do proprietário em controles do Windows Forms

Para executar os controles que dão suporte a ele de desenho proprietário, você normalmente irá definir uma propriedade e manipular eventos de um ou mais.

Esse desenho proprietário de suporte da maioria dos controles possuem uma OwnerDraw ou DrawMode propriedade que indica se o controle será elevar seu evento de desenho ou eventos quando ela pinta a mesmo.

Controles que não têm um OwnerDraw ou DrawMode propriedade incluem o DataGridView controle, que fornece desenho eventos que ocorrem automaticamente e o ToolStrip o controle, que é desenhado usando uma classe de renderização externo que tem seus próprios eventos relacionados ao desenho.

Há muitos tipos diferentes de eventos de desenho, mas ocorre de 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 desenhar o proprietário. Por exemplo, este objeto normalmente contém o número de índice do item dentro da sua coleção pai, um Rectangle que indica que o item exibe limites e um Graphics o objeto para chamar métodos de pintura. Para alguns eventos, o EventArgs objeto fornece informações adicionais sobre o item e métodos que você pode chamar para pintar alguns aspectos do item por padrão, como o plano 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 ofereça suporte a desenho proprietário. Em vez de manipulação de eventos de desenho, incluir o seu código de desenho proprietário em substituições apropriadas para o OnEventName método ou métodos na nova classe. Certifique-se de que você chamar a classe base OnEventName método ou métodos neste caso para que os usuários do seu controle podem manipular eventos de desenho proprietário e fornecer personalização adicional.

Os seguintes formulários do Windows controla o proprietário de suporte de desenho em todas as versões do.NET Framework:

Os seguintes controles suportam proprietário desenho somente na .NET Framework versão 2.0:

Os seguintes controles oferecem suporte a desenho proprietário e são novo no .NET Framework versão 2.0:

As seções a seguir fornecem detalhes adicionais para cada um desses controles.

ListBox e ComboBox controles

O ListBox e ComboBox controles permitem que você desenhar itens individuais no controle de tudo em um tamanho, ou em tamanhos variados.

ObservaçãoObservação

Embora o CheckedListBox controle é derivado de ListBox controle, não suporta desenho do proprietário.

Para desenhar cada item do mesmo tamanho, defina a DrawMode propriedade para OwnerDrawFixed e lidar com o DrawItem de evento.

Para desenhar cada item usando um tamanho diferente, defina a DrawMode propriedade para OwnerDrawVariable e lidar com ambos os MeasureItem e DrawItem eventos. O MeasureItem evento permite indicar o tamanho de um item antes de DrawItem evento ocorre para o item.

Para obter mais informações, incluindo exemplos de código, consulte os seguintes tópicos:

Componente de MenuItem

O MenuItem componente representa um item de menu único em um MainMenu ou ContextMenu componente.

Para desenhar um MenuItem, defina sua OwnerDraw propriedade para true e lidar com seus DrawItem de evento. Para personalizar o tamanho do item de menu antes do DrawItem evento ocorre, lidar com o item MeasureItem de evento.

Para obter mais informações, incluindo exemplos de código, consulte os seguintes tópicos de referência:

Controle do TabControl

O TabControl controle permite que você desenhe guias individuais no controle. Desenho proprietário afeta somente as guias; o TabPage conteúdo não é afetados.

Para desenhar cada guia em um TabControl, defina a DrawMode propriedade para OwnerDrawFixed e lidar com o DrawItem de 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ê desenhar toda a dica de ferramenta quando ela é exibida.

Para desenhar um ToolTip, defina sua OwnerDraw propriedade para true e lidar com seus Draw de evento. Para personalizar o tamanho da ToolTip antes do Draw tratar do evento ocorre, o Popup evento e o conjunto a ToolTipSize propriedade no manipulador de 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ê desenhar itens individuais, os subitens e os cabeçalhos de coluna no controle.

Para ativar o controle de desenho proprietário, defina a OwnerDraw propriedade para true.

Para desenhar cada item no controle, manipule o DrawItem de evento.

Para desenhar cada cabeçalho de coluna ou de subitem no controle quando o View for definida como Details, lidar com o DrawSubItem e DrawColumnHeader eventos.

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 o texto exibido em cada nó, defina a DrawMode propriedade para OwnerDrawText e lidar com o DrawNode evento para desenhar o texto.

Para desenhar todos os elementos de cada nó, defina a DrawMode propriedade para OwnerDrawAll e lidar com o DrawNode evento para desenhar os elementos necessários, como texto, ícones, caixas de verificação, adição e subtração de sinais e linhas que conectam 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ê desenhar células individuais e linhas no controle.

Para desenhar células individuais, lidar com o CellPainting de evento.

Para desenhar linhas individuais ou elementos de linhas, lidar com um ou ambos os RowPrePaint e RowPostPaint eventos. O RowPrePaint evento ocorre antes que as células em uma linha são pintadas e o RowPostPaint evento ocorre após as células são pintadas. Você pode manipular ambos os eventos e o CellPainting evento para pintar o plano de fundo da linha, células individuais e o primeiro plano da linha separadamente, ou você pode fornecer personalizações específicas, onde você precisa deles e use a exibição padrão para outros elementos de linha.

Para obter mais informações, incluindo exemplos de código, consulte os seguintes tópicos:

Controle ToolStrip

ToolStripe derivados controles permitem que você personalizar qualquer aspecto de sua aparência.

Para fornecer processamento personalizado para ToolStrip o conjunto de controles, o Renderer propriedade de um ToolStrip, ToolStripManager, ToolStripPanel, ou ToolStripContentPanel para um ToolStripRenderer object e manipular um ou mais dos muitos eventos desenho fornecidos pelo ToolStripRenderer classe. Como alternativa, definir um Renderer a propriedade a uma instância de sua própria classe derivada de ToolStripRenderer, ToolStripProfessionalRenderer, ou ToolStripSystemRenderer que implementa ou substitui específico OnEventName métodos.

Para obter mais informações, incluindo exemplos de código, consulte os seguintes tópicos:

Consulte também

Outros recursos

Controles para uso no Windows Forms