none
alterar a cor do item selecionado listbox RRS feed

  • Pergunta

  • Opa.

    Eu alterei as cores padrões do meu app, está tudo fixo. O problema é a listBox onde preciso que o usuário veja qual o item está selecionado. Estou com dificuldade de alterar a cor da seleção de um item no listbox.

    Alguam dica?

    valeu!!

    segunda-feira, 28 de abril de 2014 17:12

Todas as Respostas

  • Boa tarde Cassio, o que você deseja é isso? se for siga passo a passo.

    diga se deu certo ok?

    você tem que fazer uma pequena alteração no método de " DrawItem " do ListBox, Instruções:

    1- Alterar cor do texto de todos os itens 

    2- Inicie o Visual Studio e crie um novo projeto Visual Basic Windows Forms. Um novo formulário chamado " Form1 " abre na janela de edição . 

    3- Clique no botão " Visualizar" e depois clique em " caixa de ferramentas " para abrir caixa de ferramentas do Visual Studio. 

    4- clique duas vezes no controle " ListBox " . Lugares Visual Studio -lo no formulário e os nomes de " ListBox1 ". 

    5- Clique no botão " ListBox1 " control e pressione " F4 " para ver a janela Propriedades . Esta janela permite que você defina as propriedades de um controle, como cor e tamanho . 

    6- Clique na propriedade " ForeColor " . Uma seta drop-down aparece ao lado da propriedade. Clique a seta para exibir um menu de cor contendo guias. A aba "System" exibe cores do sistema Windows , o guia " Web" exibe a lista de cores da Web ; . E a guia "Custom" permite que você escolha sua própria cor a partir de uma grade de cores 
    7- Clique em um desses guias , clique na cor que você gostaria de usar para o texto de todos os itens de caixa de listagem . 

    8- Clique no item " BackColor " na janela Propriedades para exibir sua seta drop-down . Clique que a seta para escolher uma cor , tal como descrito na etapa anterior . Visual Basic , em seguida, usa a cor que você selecionou como a cor de fundo para todos os itens de caixa de listagem . Vá para a próxima seção, se você quer mudar a cor de apenas o item ListBox selecionado. 
    Alterar cor do texto de um item selecionado 

    9- Clique duas vezes na forma de barra de título. O código para o método de "Load" do formulário é aberto e exibe um método vazio "Load" 

    colar o seguinte código antes da declaração de que o método " End Sub " : . 

    ListBox1 . Items.AddRange (New Object () { "Item 1", " item ", " item ", " item 4" }) 

    ListBox1.DrawMode = DrawMode.OwnerDrawFixed 

    10- A primeira declaração adiciona itens para o ListBox . A próxima instrução define o modo de desenho do controle para " OwnerDrawFixed ". Utilize este modo quando você quiser substituir o modo de desenho padrão do Visual Basic para um controle 

    Cole o seguinte código após a declaração de "Sub End" do método de "Load" : . 

    Privada Sub ListBox1_DrawItem (sender As Object , _ 

    ByVal e As System.Windows.Forms.DrawItemEventArgs ) _ 

    alças ListBox1.DrawItem 

    e.DrawBackground () < br >

    Dim pincel como pincel = Brushes.Black 

    Se ( e.State E DrawItemState.Selected = DrawItemState.Selected ) Então 

    escova = Brushes.Green 

    End If 

    e.Graphics.DrawString ( ListBox1.Items ( e.Index ) . ToString () , 

    e.Font , escova, _ 

    e.Bounds , StringFormat.GenericDefault ) 

    End Sub 

    Este código substitui o método " DrawItem " do ListBox. O método " DrawItem " é executado a cada vez Visual Basic chama um item de ListBox no controle. 

    11- Localize a instrução que lê, " Dim pincel como pincel = Brushes.Black ". Esta linha de código cria uma variável " pincel " que mantém a cor do pincel de desenho padrão. Neste caso, que a cor é "Black ". Mude "Black " para a cor que você gostaria de usar para desenhar os itens de caixa de listagem não selecionados . Por exemplo, se você quer mudar a cor de item padrão para vermelho , substitua a instrução anterior com este : 

    Dim pincel como pincel = Brushes.Red 

    12- Localize a seguinte declaração no código : escova =Brushes.Green

    Substituir " verde" com qualquer cor. Visual Basic , em seguida, usa essa cor para desenhar item selecionado da ListBox. A declaração final chama o método " DrawString " que atrai os itens de caixa de listagem . 

    13- Pressione " F5" para executar o programa . O formulário aparece e exibe a caixa de listagem e seus itens . Clique em qualquer item para selecioná-lo . Sua cor muda para a cor que você escolheu para o item selecionado . Todos os outros itens exibir a cor padrão. 

    segunda-feira, 28 de abril de 2014 19:59
  • Opa. Obrigado pelo retorno.

    Entretanto estou fazendo isso no windows phone e não win forms. A ListBox do xaml não tem a propriedade DrawMode.

    valeu!

     

    terça-feira, 29 de abril de 2014 16:56
  • Opa. Obrigado pelo retorno.

    Entretanto estou fazendo isso no windows phone e não win forms. A ListBox do xaml não tem a propriedade DrawMode.

    valeu!

     

    Olá Cássio,

    Você deve definir um Style personalizado para a propriedade ItemContainerStyle do ListBox.

    Dê uma olhada neste tutorial para WPF e Expression Blend. É semelhante ao que você precisa fazer:

    WPF tutorial: HOW TO style and change WPF ListBox (ComboBox, TreeView…) highlighting colors | UX Passion – UX design agency


    Herbert Lausmann

    terça-feira, 29 de abril de 2014 17:15
  • E ai Cassio, se a sugestao do Herbert funcionar, acho difícil não funcionar pois o cara é FERA, marque como resposta ok?

    pois assim irá ajudar diversos usuários no futuro. 

    Abraço.


    terça-feira, 29 de abril de 2014 18:16
  • Bom dia Cássio,

    Vou mover sua pergunta ao fórum correto, pois a mesma se encontra atualmente no fórum de Windows Phone.

    Att, 


    Giovani Cruzara – Microsoft Contingent Staff

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita.

    Msdn Community Support

    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    terça-feira, 29 de abril de 2014 19:40
    Moderador