begin process at 2010 02 10 01:41:06
  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 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 Afficher dans une Picturebox un item sélectionné dans un TreeView [ par louve_alpha ] Bonsoir,J'ai un TreeView qui affiche en tant qu'item des images appartenant à un dossier. Je voudrais afficher dans une PictureBox l'image sélectionné ListView [ par Bidou ] Imaginons que j'aie un listview (View Details) qui contient 100 éléments (en colonne donc).Je peux voir seulement les 10 premiers éléments dans le lis


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,811 sec (4)

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