Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MarcosMTS

Listview - como trocar cor de fundo de um item selecionado?

Recommended Posts

Ola, Ja pesquisei bastante sobre como mudar a cor de fundo de um item selecionado na listview que fica só um cinza bem fraco, mas só encontrei um monte de gambiarra e codigos complicados... Alguem tem uma dica pra me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é isso amigo, esse teu exemplo é a cor de fundo da listview, eu queria mudar a cor de fundo da linha selecionada por exemplo a linha em azul como a foto abaixo:

 

ListViewFind.gif

 

 

Eu coloquei a propriedade HideSelection como false para manter o item selecionado visivel porem fica só com um cinza muito fraco!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.

Então, mas você tentou usar a propriedade BackColor do ListViewItem? Ela muda a cor do item, não da ListView Inteira, veja, fiz aqui no meu pc rapidinho.

//Quando o item receber o focus fica vermelho
listView1.FullRowSelect = true;
listView1.FocusedItem.BackColor = Color.Red;

A única coisa que não consegui mudar foi a cor do clique, parece ser padrão do sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funcionou, na verdade ao adicionar a linha: listViewTurmas.FocusedItem.BackColor = Color.Red; ele não exibe nada na listview, parece que trava o codigo, simplesmente para de executar o codigo nessa linha e nao exibe erro, e caso eu coloque essa linha apos o foreach ou em qualquer lugar tambem trava e não muda a cor, euja tinha testado isso! A linha fica em azul ao clicar mas quando clico fora da listview tiro o foco eu acho.. a linha fica cinza, gostaria de trocar esse cinza!


            listViewTurmas.View = View.Details;
            listViewTurmas.Columns.Add("Turma:");
            listViewTurmas.Columns.Add("Código:");
            listViewTurmas.Columns[0].Width = 160;

            listViewTurmas.Items.Clear();
            listViewTurmas.FullRowSelect = true;

// o codigo para de executar aqui
            listViewTurmas.FocusedItem.BackColor = Color.Red;

            turmas tur = new turmas();
            DataTable dados_turmas = tur.recuperarTodos();

            foreach (DataRow row in dados_turmas.Rows)
            {
                ListViewItem item = new ListViewItem(row["nome_turma"].ToString());
                item.SubItems.Add(row["codigo_turma"].ToString());
                listViewTurmas.Items.Add(item); 
            }
           

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está chamando esse código em qual evento do seu listViewTurmas?

Porque eu fiz isso no evento Click, depois de a lista ser preenchida e funcionou sem erros:

        private void listViewTurmas_Click(object sender, EventArgs e)
        {
            listViewTurmas.FocusedItem.BackColor = Color.Red;
        }

Toda as linhas que cliquei ficaram vermelhas, mesmo clicando em outro lugar. Talvez eu não tenha entendido sua dúvida. É isso que você deseja, não? Que quando clicar numa linha ela mude de cor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

To chamando o codigo no _Load do form, testei o "listViewTurmas.FocusedItem.BackColor = Color.Red;" no click tambem agora e funcionou como voce falou acima, mas eu gostaria que apenas a ultima linha clicada ficasse vermelha não as anteriores que eu cliquei!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda no evento click, antes do código que você usa a propriedade "FocusedItem", faça um laço for ou foreach em busca de todos os itens e apague a cor de fundo. Talvez funcione.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu certo agora! :joia:

Obrigado pela ajuda!

Ficou assim:

  foreach (ListViewItem item in listViewTurmas.Items)
            {
               item.BackColor = Color.White;
               item.ForeColor = Color.Black;
            }

            listViewTurmas.FocusedItem.BackColor = Color.SteelBlue;
            listViewTurmas.FocusedItem.ForeColor = Color.White;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.