2010-09-27 5 views
4

Je travaille sur une application dans laquelle une vue liste est utilisée pour sélectionner quel ensemble de données afficher. Lorsque l'utilisateur clique sur un élément de liste, l'affichage principal est mis à jour avec les données associées à l'élément sélectionné et le contrôle ListView perd le focus. En perdant le focus, le contrôle arrête de mettre en surbrillance l'élément sélectionné même si j'ai explicitement défini HideSelection sur false.La propriété WinForms ListView.HideSelection n'a aucun effet?

According to MSDN: «true si l'élément sélectionné n'apparaît pas en surbrillance lorsque le contrôle perd le focus, false si l'élément apparaît toujours en surbrillance lorsque le contrôle perd le focus sélectionné La valeur par défaut est vrai. »

Est-ce un bug ou manque-t-il quelque chose? Nous utilisons .NET version 2.0. (Oui, je l'ai vérifié que la propriété n'est pas défini quelque part hors du concepteur-code généré)


Edit: Apparemment, la sélection était mis en évidence, bien que très subtilement. Après avoir parcouru la liste des propriétés, je ne vois pas comment changer la couleur de surbrillance lorsque le contrôle n'a pas de focus. Des idées? Merci.

+0

Vous avez besoin d'un dessin propriétaire pour modifier les couleurs des lignes sélectionnées. Ou vous pouvez utiliser ObjectListView qui sait déjà comment faire cela. – Grammarian

Répondre

6

Etes-vous sûr que ce n'est pas seulement vraiment, vraiment difficile à voir. Sur mon écran, la différence est blanche par rapport à "vraiment vraiment gris pâle" - très subtile. Il est plus évident si vous modifiez la couleur d'arrière-plan de ListView pendant que vous étudiez (essayez également de baisser la luminosité de votre écran).

Montré ci-dessous; le "def" est effectivement sélectionné.

No, really it is

+1

Hah, tu as raison! Quand j'ai regardé mon moniteur sous un angle différent, il est apparu clairement. Quel étourdi. Je ne suppose pas que vous connaissiez un moyen de changer la couleur de la sélection lorsque le contrôle n'a pas de focus? –

+0

@Martin - non, je ne le fais pas; Pardon. –

+0

Je pourrais avoir à recourir à une forme de rendu personnalisé, alors. Merci quand même - vous m'avez sauvé beaucoup de maux de tête en essayant de comprendre pourquoi il ne se présentait pas! :) –

3

Certains moniteurs LCD ne fait ont un problème montrant suffisamment distinctif de couleur grise. C'est un paramètre du système qui affecte tous les programmes, vous ne pouvez pas le changer pour le vôtre. Étant donné que c'est vraiment un problème avec votre moniteur, il y a peu de raison de ne pas le réparer en changeant la couleur du système.

Utiliser le Panneau de configuration + Affichage. Sur Win7, cliquez sur Personnalisation, Couleur de la fenêtre, Paramètres d'apparence avancés. Sélectionnez "Élément désactivé" dans la boîte de dialogue.

+0

Fait intéressant, cela a changé l'apparence de essentiellement * tous les * contrôles inactifs, mais la vue de la liste. Je suis coincé avec une version Windows localisée, donc j'ai peut-être choisi le mauvais paramètre. –

+0

C'est exactement mon problème! Merci pour ce post. J'ai hérité d'un projet qui utilise des mécanismes de mise à jour visuelle vraiment bizarres et énigmatiques, et j'ai lutté avec ce qui semblait être une sorte de contournement ou de contournement de la propriété HideSelection (une possibilité très réelle dans ce code), avant de penser pour faire glisser le formulaire sur mon autre moniteur. Effectivement, la coloration désactivée était là, faiblement visible. Même en sachant que c'est le problème, je ne peux toujours pas afficher la couleur désactivée par défaut sur mon moniteur principal, quelle que soit la combinaison de contraste et de luminosité que j'utilise. – Steven

Questions connexes