msdn17_capa.gif

Clique aqui para ler todos os artigos desta edição

 

Criando um controle de classificação cinco estrelas

por Duncan Mackenzie

Este artigo discute

Este artigo usa as seguintes tecnologias:

·          Como criar e personalizar um controle

Visual Basic

 

Download:

AdvancedBasics0501.exe (144KB

Chapéu

Controle Personalizado

 

 

Tenho de admitir; a maioria dos meus controles Windows® Forms são uma tentativa de algo que já existe. Desta vez, objeto de meu desejo é o controle de classificação cinco estrelas do Windows Media® Player (veja a Figura 1).

 

image001.gif

Figura 1 O controle de classificação cinco estrelas

 

Este controle é notável e oferece uma ótima maneira visual de ver as classificações, mas é a experiência de edição que considero especialmente interessante. Quando o cursor é movido sobre essa coluna, o Windows Media Player realça as estrelas para indicar o valor sobre o qual você está flutuando no momento, fornecendo um ótimo retorno visual. Esse mesmo tipo de interface de usuário é encontrado em vários sites da Web, incluindo o Netflix e o Amazon, e eu queria ter a funcionalidade em meus próprios aplicativos, então decidi criar meu próprio. Eu uso um controle Windows Forms para emular esse elemento de interface de usuário, ao mesmo tempo em que tento personalizá-lo de modo a poder usá-lo em diversas situações.

 

Primeiros passos

A primeira etapa é criar um novo projeto de Class Library para armazenar o controle e um aplicativo Windows vazio para ser meu projeto de teste. O modelo de projeto Windows Control Library pode parecer mais apropriado, e ele funcionará satisfatoriamente, mas por padrão esse projeto inclui controles de usuário (que são geralmente usados para controles compostos — controles Windows Forms que contêm um ou mais controles), e tudo de que preciso é um arquivo Class vazio. Em seguida, você precisa fazer com que sua nova Class atualmente vazia herde de System.Windows.Forms.Control, o que é facilmente obtido adicionando-se uma única linha após a declaração da classe:

 

Public Class Ratings

    Inherits System.Windows.Forms.Control

 

End Class

 

Se tentar adicionar a instrução Inherits usando apenas o IntelliSense®, você notará um pequeno problema: iniciar seu projeto com um modelo de Class Library não adicionará nenhuma referência à assembly System.Windows.Forms, por isso você precisará adicioná-la manualmente. Neste ponto, sigo em frente e adiciono também uma referência à System.Drawing.dll, já que no final ela será usada por um controle orientado a desenho personalizado.

Deste ponto em diante, eu geralmente sigo estas etapas para o desenvolvimento de todos os meus controles:

1.    Adiciono um construtor padrão para todos os controles de desenho personalizado e configuro todos os estilos de controle necessários para que o controle seja desenhado de forma mais correta e suave possível.

 

Public Sub New()

    Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True)

    Me.SetStyle(ControlStyles.DoubleBuffer, True)

    Me.SetStyle(ControlStyles.ResizeRedraw, True)

    Me.SetStyle(ControlStyles.UserPaint, True)

    ...

Quer ler esse conteúdo completo? Tenha acesso completo