Pergunta

Eu tenho um controle ListView e estou tentando descobrir a maneira mais fácil/melhor de proibir a alteração das linhas selecionadas, sem escondido a(s) linha(s) selecionada(s).

Eu sei que há um HideSelection propriedade, mas isso só funciona quando o ListView ainda está ativado (mas não focado).Preciso que a seleção fique visível mesmo quando o ListView estiver desabilitado.

Como posso implementar isso?

Foi útil?

Solução

Você também pode fazer o proprietário do ListView.Você então tem controle total sobre a aparência dos itens, estejam eles selecionados ou não ou se o próprio ListView está habilitado ou não.O DrawListViewItemEventArgs fornece uma maneira de solicitar ao ListView que desenhe partes individuais do item, de modo que você só precise desenhar os bits de seu interesse.Por exemplo, você pode desenhar o plano de fundo do item, mas deixar que o ListView desenhe o texto.

Outras dicas

Existem duas opções: alterar as cores desativadas das linhas selecionadas.Ou altere todas as outras linhas para simular que estão desativadas, exceto a selecionada.A primeira opção é obviamente a mais fácil, e a segunda opção obviamente precisará de algumas proteções extras.

Na verdade, já fiz a primeira opção antes e funciona muito bem.Você só precisa se lembrar de alterar as cores de volta aos padrões, caso outra linha seja selecionada posteriormente no processo.

Implemente SelectedIndexChanged e faça isso

    private void listViewABC_SelectedIndexChanged(object sender, EventArgs e)
    {
        listViewABC.SelectedItems.Clear();
    }
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top