begin process at 2012 02 09 18:24:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C#

 > 

Archives

 > 

Au secours

 > 

Forms.ListView, SelectedIndexChanged et clignotement


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Forms.ListView, SelectedIndexChanged et clignotement

jeudi 27 avril 2006 à 19:08:34 | Forms.ListView, SelectedIndexChanged et clignotement

MyXiLo

Bonsoir.

L'évènement SelectedIndexChanged se déclenche lorsque la sélection dans un ListView change. Le problème est que lorsqu'un Item est déjà selectionné et que l'utilisateur en sélectionne un autre, SelectedIndexChanged est appelé deux fois: d'abord parcequ'aucun élément n'est plus sélectionné (transition) puis quand l'élément de destination est sélectionné.

En fonction de la position de l'Item sélectionné dans le ListView je grise(Enabled=false) ou non des boutons. SelectedIndexChanged s'appelant deux fois consécutivement, mes boutons clignotent (je Enabled=false tout quand rien n'est sélectionné puis Enabled=true pour certains boutons lorsqu'il y a un Item dans la sélection), ce qui est véritablement pénible.

J'aimerais savoir si quelqu'un sait comment faire (sans trop chager le code, car je n'ai aucune envie de passer par le controle du clavier et des fleches, etc.) pour détecter lorsque la sélection change véritablement.

Merci d'avance.
Thomas.
jeudi 27 avril 2006 à 19:38:42 | Re : Forms.ListView, SelectedIndexChanged et clignotement

Bidou

Administrateur CodeS-SourceS
Salut,
Pourquoi ne pas faire tout simplement un test (dans l'eventHandler) pour savoir si un item est sélectionné, du genre :

if(this.listView.SelectedItems.Count > 0) MessageBox.Show("Selected");



[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
jeudi 27 avril 2006 à 19:46:52 | Re : Forms.ListView, SelectedIndexChanged et clignotement

Charles Racaud

Membre Club
Salut,

Tu peux aussi passer par les événement du clique.
(Si on a cliquer sur un item ou non)

private void TaListView_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
  if (TaListView.GetItemAt(e.X, e.Y) == null)
  {
    // On a cliquer a coté d'un item
  }
  else
  {
    // On a cliquer sur un item
    // Donc comme un SelectedIndexChanged
    [...]
  }
}    

Kenji

Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
jeudi 27 avril 2006 à 20:36:14 | Re : Forms.ListView, SelectedIndexChanged et clignotement

MyXiLo

Bidou > Et bien c'est ce que je fais, mais lors de la transition (aucun Item n'est selectionné mais un va bientôt l'être) aucun Item n'est dans la sélection, ce qui "fausse" le test puisqu'en vérité un Item est sélectionné mais pas actuellement. C'est ce qui fait clignoter mes boutons.

Charles Racaud > Le soucis c'est que l'utilisateur peut aussi changer la sélection avec les flèches du clavier. Ca m'embete de vérifier le clavier et la souris mais je ne vais pas avoir le choix je crois...

Merci pour vos réponses.

jeudi 27 avril 2006 à 21:09:07 | Re : Forms.ListView, SelectedIndexChanged et clignotement

Bidou

Administrateur CodeS-SourceS
Hum, je ne vois pas trop le problème!
Si par exemple, la condition c'est que le text d'un item commence par le caractère "3" pour disabler certain bouton, on ferait comme ça (et ça ne clignote pas) :

if (this.listView1.SelectedItems.Count > 0)
{
  
if (this.listView1.SelectedItems[0].Text[0] == '3')
   {
     
this.button1.Enabled = false;
     
this.button2.Enabled = false;
   }
  
else
  
{
     
this.button1.Enabled = true;
     
this.button2.Enabled = true;
   }
}





[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
jeudi 27 avril 2006 à 22:19:36 | Re : Forms.ListView, SelectedIndexChanged et clignotement

MyXiLo

J'ai un ListView contenant plusieurs Items. Un Item est déjà selectionné.L'utilisateur clique sur un autre Item. SelectedIndexChanged se lance et le ListView.Items.Count=0 (car l'Item précédent n'est plus sélectionné et le suivant ne l'est pas encore), je fais mes tests et je définis Button.Enabled=false. SelectedIndexChanged est appelé de nouveau(car l'Item d'arrivée est selectionné, sans intervention supplémentaire du programme ou de l'utilisateur) avec ce coup ci ListView.Items.Count=1, je fais mes tests mais cette fois ci la réaction est Button.Enabled=true.

Avec le changement de sélection mon bouton passe successivement de non autorisé à autorisé, ce qui le fait clignoter.

Ta solution ne fait effectivement pas clignoter les boutons si la fonction qui les contient n'est appelée qu'une fois. En revance si elle est appelé deux fois consécutives et que les réactions sont différentes alors les boutons vont clignoter.
jeudi 27 avril 2006 à 22:54:49 | Re : Forms.ListView, SelectedIndexChanged et clignotement

Bidou

Administrateur CodeS-SourceS
J'ai bien compris ton problème, mais le morceau de code que je t'ai mis plus haut ne provoque plus ce clignotement chez moi. Il me manque peut-être quelque chose ?
Tu pourrais éventuellement poster un morceau de code...




[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
vendredi 28 avril 2006 à 10:25:01 | Re : Forms.ListView, SelectedIndexChanged et clignotement

MyXiLo

Bonjour,

En vérité j'avais mal lu ton code et effectivement il n'y a pas de clignotement. Pour ce qui est de mon code, je n'effectue pas uniquement le test lorsqu'il y a un Item dans la sélection mais aussi lorsqu'il n'y en a.

if (this.ListView.SelectedItems.Count == 1)
{
if(this.ListView.SelectedItems[0].Index > 0)
{
this.Button.Enabled=true;
}
else
{
this.Button.Enabled=false;
}
}
else
{
this.Button.Enabled=false;
}

Lorsque l'utilisateur clique sur des Items qui ne sont pas en première position il y a clignotement. Désolé de m'être mal expliqué.

vendredi 28 avril 2006 à 10:30:39 | Re : Forms.ListView, SelectedIndexChanged et clignotement

Nikoui

Bidou, tu rajoute un test "si la premiere lettre est un 3"... mais le problème de l'auteur du post (si j'ai bien compris), c'est que le seul test qu'il veux faire c'est : "un item est sélectionné ?". (autrement dit, execute ton code sur un treeview dont tous les items commencent par 3 pour reproduire le meme probleme avec ton code...).
vendredi 28 avril 2006 à 11:56:23 | Re : Forms.ListView, SelectedIndexChanged et clignotement

Bidou

Administrateur CodeS-SourceS
Euh, je ne sais pas si je suis bête ou quoi, mais je vois pas le problème lol.
Finalement, c'est quoi le but? De disabler un bouton lorsque le premier élément d'un ListView est sélectionné ? Si oui, on fait comme ça (et ça ne clignote pas) :

if (this.listView.SelectedItems.Count == 1)
{
  
this.button.Enabled = this.listView.SelectedItems[0].Index > 0;
}




[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever

1 2

Cette discussion est classée dans : listview, sélection, item, sélectionné, selectedindexchanged


Répondre à ce message

Sujets en rapport avec ce message

Sélection automatique d'1 item dans la listView [ par oboudou ] Bonjour,J'aimmerais sélectionner "par la programmation" un item dans la listView. Ex : J'aimerais que dans ma listeView ma troisieme ligne soit sélect ListView : Image bleu pendant la sélection d'un item [ par EmacLi ] Bonjour à tous, J'ai remarqué que lors de la sélection d'un item dans une listview, l'image est aussi sélectionné en bleu. Comportement que n'a appar Listview et item selectionné [ par renyone ] Bonjour à tous.J'ai une Listview qu'on va appaler mylistView.Mon code : mylistView.Items[0].Selected = true; (j'ai plusieurs elements dans ma listview rechercher un item dans une listview [ par killergh ] Bonjour à tous,Je suis entrain de développer  une application de gestion d'une bibliothèque en se basant sur une base de donnés access.Mon bute et d'a List view et selecteditem [ par renyone ] Bonjour, j'ai un petit souci avec un listview. J'ai setté ses propriètés MultiSelect à true et HideSelection à false. Quand le control perd le focus, ListView et checkbox, contrainte de sélection [ par vagg ] Bonjour à tous,J'ai actuellement une ListView en mode Détails !dans cette ListView j'ai plusieurs objets qui sont cochable par des Checkbox, parcontre récupérer le contenu de l'item sélectionné dans un listview WPF framework 3.5 [ par robertBa ] Comment récupérer le contenu de l'item séléctionné dans un listview WPF. Listview.SelectedItem n'existe pas. ajouter un item dans une listview [ par vto59 ] Voila je voudrai pouvoir ajouter un item dans ma listview via un bouton "ajouter" sur mon formulaire. Pour cela lorsque je clique sur un bouton une zo listview selection d'item [ par kedric ] Bonjour a tous, voici mon souci j'ais une listview avec 50 ligne et je voudrais que quand je clique sur un boutons il fasse comme si j'apuyais sur la maj listview [ par WieWeet ] salut, mise a jour des items d'un listview ( labeledit=true) controles et si erreur remettre valeur initiale [code=cs] using System; using System.Wi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales