IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Suprimer case CheckedListBox problème


Sujet :

VB.NET

  1. #1
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 12
    Par défaut Suprimer case CheckedListBox problème
    Bonjour mes amis , j'ai fais des recherches , essayé des codes , mais mon problème ne se résolve pas .... En faites j'ai une checkboxlist et dedans des options . C'est options je voudrais pouvoir les suprimmer en séléctionnant Suprimmer dans un Radio et en appyuant sur un bouton après . Le problème c'est que mes options reste toujours la , elle ne se suprimmer pas comme si suprimmer se faisait dans le vide . Je pense que l'action n'est pas "lier" au je sais pas . Voila le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
           If Me.Supprimer.Checked Then
                If MsgBox("Vous êtes sur de vouloir supprimer cette action ?") Then
     
                    Me.Liste_options.Remove(OptionsSelectionner)
                End If
    Et voila la fonction OptionsSelectionner , qui je pense est le problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     Private Sub liste_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
                For Each OptionsTotal As options In Liste_options
                    If OptionsTotal.options = Me.liste.SelectedItems.ToString Then
     
                        Me.OptionsSelectionner = OptionsTotal
                    End If
                Next
            End If
     
        End Sub
    J'espère que vous aller m'aider ! Merci Bonne Journée

  2. #2
    Membre éclairé Avatar de sihammaster
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    256
    Détails du profil
    Informations professionnelles :
    Activité : Webmaster
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 256
    Par défaut
    Bonjour,
    Si tu voudras supprimer les case à cocher de tout le checkedlistbox fait ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    checkedlistbox1.Iitems.Clear()

  3. #3
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 12
    Par défaut
    Merci , en cherchant votre fonction n'hésitais pas , c'est celle la qui efface les élément selectionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.checkedboxlist.ClearSelected()
    Sauf que ça ne fais rien . Ca le décoche juste :s

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 048
    Par défaut
    Je pense que tu prends un peu le problème à l'envers là.

    Pour faire simple:

    Il y a 2 listes différentes dans le checkedListBox:

    Une qui contient les éléments de la liste
    Une qui contient les éléments coché de la liste

    Si tu effaces la liste des éléments coché avec ClearSelected(), il est clair que ça ne va pas supprimer les éléments de la liste mais juste remettre à zéro les coche.

    Pour effacer tout les éléments de la liste il faut passer par .Item.Clear(), pour effacer uniquement un élément de la liste Item(index élément).Remove ou un truc du style.

    Maintenant un peu d'ergonomie et de design :

    Si t'as liste de case à cocher représente une liste d'option, il est peut être plus logique de déterminer l'ajout ou la suppression d'option à l'objet apparenté par le fait que la case soit coché ou non et non par une suppression de l'élément global ? (d'autant plus que dans ce cas l'opération est facilement réversible pour l'utilisateur) C'est même tout l'interet d'utiliser une checkedlistbox à la place du listbox standard.

    Ceci d'autant plus que, c'est un avis personnel, la checkedlistbox est nettement moins bien foutue que la listbox standard.

  5. #5
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 12
    Par défaut
    Ok j'ai compris . Moi ce que je veux faire c'est supprimer les cases cochées . Comment je peux faire alors ?

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Citation Envoyé par sinople Voir le message
    pour effacer uniquement un élément de la liste Item(index élément).Remove ou un truc du style.
    Je pense que tout est dit, c'est quand même fou que certains ne cherchent à rien faire par soi-même, tu as la réponse alors essaye de la mettre en oeuvre et si tu bloques revient poser tes questions, mais ne cherche pas à obtenir le code tout fait car dès que tu auras la même chose à refaire tu n'y arrivera à nouveau pas.

  7. #7
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 12
    Par défaut
    Oui j'ai bien compris qu'il faillait que je cherche , mais l'exemple donner n'existe pas . Le seul code qui me permet d’effectué l'action sur les case coché est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.liste_options.CheckedItems
    Mais je n'ai pas trouvé de Remove ou autre :s

  8. #8
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Tu recupères d'abord les index de tous tes éléments cochées qui sont dans Me.liste_options.Items et pour lesquels Checked = true.
    Ensuite c'est à partir de ces index que tu travailles, pour supprimer les éléments cochés il suffit que tu parcours la liste d'index que tu viens de récupérer et pour chaque élément tu fais Me.liste_options.RemoveAt(index)

    Celà dit ça risquerait de bloquer su tu veux supprimer l'indice 1 puis 3, tu supprimes le 1, le 3 devient le 2, donc il va te supprimer l'index 3 mais il s'agira en fait de celui qui était en position 4 lorsque tu as fait ta sélection d'index à supprimer et no celui qui était en position 3.
    Pour éviter ça il suffit que tes indices soient classés par ordre décroissant, ainsi tu supprimes d'abord l'indice 3, l'incide 1 reste à sa position, tu peux donc ensuite le supprimer

  9. #9
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 12
    Par défaut
    Ok , donc dans l'idée , ce code devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                If MsgBox("Are you sure you want to remove ?", vbYesNo, "Confirmation") Then
                    'On le retire de la liste
                    For x As Integer = 0 To liste_options.Items.Count - 1
                        Me.liste_options.RemoveAt(Me.liste_options.CheckedItems)
                    Next
                End If
    Je ne sais pas si c'est cela a quoi vous pensiez mais je pense que sa pourrais marche. Le seul problème est que RemoveAt n'existe pas . Je n'ai trouvé aucune fonction pour supprimer . Merci de votre aide

  10. #10
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    If MsgBox("Are you sure you want to remove ?", vbYesNo, "Confirmation") Then
     
         'liste des index cochés, donc à supprimer
         Dim listasupprimer As New List(Of Integer)
     
         'On parcours tous les indices cochés (exemple 1, 3, 7)
         For Each indice As Integer In liste_options.CheckedIndices
              'On insere l'indice en position 0, donc a la fin de la boucle l'indice en position 0 sera le 7, puis le 3, puis le 1
              listasupprimer.Insert(indice, 0)
         Next
     
         For Each indice In listasupprimer
              liste_options.Items.RemoveAt(indice)
         Next
     
    End If
    Quelque chose dans ce genre, c'est pas dit à 100% que ça marche du premier coup mais dans la logique je pense que c'est ça.

  11. #11
    Membre expérimenté Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Par défaut
    Bonjour,

    Je te conseil d'utiliser un TreeView avec affichage de case a coché.
    Chacune de tes options serait alors un Noeud racine. et tu aurait simplement ce bout de code à mettre sur ton bouton pour supprimer les éléments cochés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For Each Noeud As TreeNode In TreeView1.Nodes
    If Noeud.Checked = True Then
    Noeud.Remove()
    End If
    Next
    Tu ne peux dans une Checkboxlist, parcourir tes élements afin de supprimer par l'index ceux qui sont cochés, tu aura une erreur. L'utilisation d'un Treeview est conseillé.

  12. #12
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Citation Envoyé par AcidLines Voir le message
    Bonjour,

    Je te conseil d'utiliser un TreeView avec affichage de case a coché.
    Chacune de tes options serait alors un Noeud racine. et tu aurait simplement

    Tu ne peux dans une Checkboxlist, parcourir tes élements afin de supprimer par l'index ceux qui sont cochés, tu aura une erreur. L'utilisation d'un Treeview est conseillé.
    Oui ok pour le treeview, pourquoi pas, mais je ne vois pas pourquoi il y aurait une erreur sur la suppression des éléments checked si le code est fait correctement ...

  13. #13
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 12
    Par défaut
    Merci de vos réponses . Je veux bien utilisé un TreeView mais avec la CheckListBox je savais (plus ou moins) utilisé quelques fonctions et mon code repose la dessus . Alors qu'avec TreeView je ne connais rien , et je ne sais pas si les fonctions que j'ai marcherons avec TreeView . Je préfèrerais garder CheckListBox ..... Merci

  14. #14
    Membre expérimenté Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Par défaut
    Citation Envoyé par asmduty Voir le message
    Oui ok pour le treeview, pourquoi pas, mais je ne vois pas pourquoi il y aurait une erreur sur la suppression des éléments checked si le code est fait correctement ...
    Le "RemoveAt()" se base sur l'indexation. Si tu essaye de supprimer un élément lors d'un parcours des éléments, étant donné que tu supprime les élément ton énumérateur change :

    La liste à laquelle cet énumérateur est lié a été modifiée. Un énumérateur ne peut être utilisé que si la liste ne change pas.

  15. #15
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Citation Envoyé par asmduty Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    If MsgBox("Are you sure you want to remove ?", vbYesNo, "Confirmation") Then
     
         'liste des index cochés, donc à supprimer
         Dim listasupprimer As New List(Of Integer)
     
         'On parcours tous les indices cochés (exemple 1, 3, 7)
         For Each indice As Integer In liste_options.CheckedIndices
              'On insere l'indice en position 0, donc a la fin de la boucle l'indice en position 0 sera le 7, puis le 3, puis le 1
              listasupprimer.Insert(indice, 0)
         Next
     
         For Each indice In listasupprimer
              liste_options.Items.RemoveAt(indice)
         Next
     
    End If
    Quelque chose dans ce genre, c'est pas dit à 100% que ça marche du premier coup mais dans la logique je pense que c'est ça.
    Et sachant que mon code parcours l'indexation à l'envers pour ne pas modifier l'indexation, et que je fais un for each sur une liste et non sur ma checklistbox je ne vois pas pourquoi ça me dirait ça ...

  16. #16
    Membre expérimenté Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Par défaut
    Autant pour moi, je n'ai pas penser à parcourir à l'envers

  17. #17
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 12
    Par défaut
    Merci de votre aide , j'ai essayé ton code , il me marque un problème à la ligne 9 :
    L'index doit être dans les limites de la List.
    Nom du paramètre : index
    J'ai essayé de changer mais l'erreur revient . Que veut dire cette erreur ?

    Merci

  18. #18
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Padron, c'est de na faute, j'ai inversé les paramètres du "Insert"


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listasupprimer.Insert(indice, 0)


    j'essayais d'insérer à la position indice (exemple 7) la valeur 0, au lieu d'insérer la valeur 7 en position 0, donc comme au debut ta liste est vide tu ne peux rien inserer en position 7, alors qu'en position 0 oui.

    donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    listasupprimer.Insert(0, indice)

  19. #19
    Membre averti
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 12
    Par défaut
    Merci de m'avoir expliqué . Parfait ça marche correctement ! Merci encore pour tous de m'avoir aidé . Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Case à cocher -- problème champ multivalué
    Par PetitChris dans le forum IHM
    Réponses: 10
    Dernier message: 03/11/2015, 03h17
  2. Problème SELECT, CASE et Group by
    Par Royd938 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 03/10/2014, 08h41
  3. CheckedListBox Problème [VB]
    Par Xtremmax dans le forum VB.NET
    Réponses: 5
    Dernier message: 04/04/2011, 00h49
  4. [C#] [checkedListBox] Problème dans l'evenement ItemCheck
    Par Mecano14 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 21/01/2006, 20h52
  5. []Problème avec un "Select Case" : Instructions et..
    Par Olun dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/09/2005, 14h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo