none
WPF Supprimer un Item d'une ListBox RRS feed

  • Question

  • Bonjour je bloque sur un sujet me semblant pourtant simple.

    pour  exemple : j'ai une ListBox (PalettesListBox) contenant des chiffres et un TextBox (DeleteIDTxtBox).

    l'utilisateur entre dans le textBox le chiffre présent dans la listbox, qu'il veut supprimer mais cela ne fonctionne pas.

    string i = DeleteIDTxtBox.Text;
                    ListBoxItem lbi = (ListBoxItem)(PalettesListBox.ItemContainerGenerator.ContainerFromItem(i));
                    PalettesListBox.Items.Remove(lbi);


    JF Collombet ® CreateSpecificCulture

    mardi 24 avril 2018 05:07

Réponses

  • Qu'est qu'il y a dans les case du ListBox?

    Attention aux caractères de contrôle invisible si cela vient d'un fichier extérieur...

    Vous pouvez remplacer par un test "contains":

     If PalettesListBox.Items[i].ToString().Contains(numId) = True Then

    dimanche 29 avril 2018 08:55

Toutes les réponses

  • le Remove attend un index et non pas un ListBoxItem.

    Par exemple:

    avec le code:

     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim textItemASupprimer As String = TextBox1.Text
    
            ' Chercher l'item
            For i As Integer = 0 To ListBox1.Items.Count - 1
                If ListBox1.Items(i).ToString = textItemASupprimer Then
                    ListBox1.Items.RemoveAt(i)
                    Exit For ' Il faut sortir parce que Items.Count n'est plus valable...
                End If
            Next
    
        End Sub

    mardi 24 avril 2018 09:13
  • Bonjour et merci pour cette réponse. J'ai adapté votre code au langage C#. Il ne retourne pas d'erreur mais ne supprime pas la valeur voulue dans la ListBox

     string numId = DeleteIDTxtBox.Text;
                    for(int i = 0; i <= PalettesListBox.Items.Count -1; i++)
                    {
                        if (PalettesListBox.Items[i].ToString()==numId)
                        {
                            PalettesListBox.Items.RemoveAt(i);
                            break;
                        }
                    }


    JF Collombet ® CreateSpecificCulture

    mardi 24 avril 2018 16:15
  • Etes-vous sur que le texte est correct dans la liste?

    Mettez un debug pour voir si la condition

    PalettesListBox.Items[i].ToString()==numId

    est bien True....


    Avez vous pensez à supprimer la ligne sélectionner plutot que de devoir écrire le contenu de la ligne...

    Par exemple:

    PalettesListBox.Items.RemoveAt(PalettesListBox.SelectedIndex);

    samedi 28 avril 2018 09:26
  • Bonjour, effectivement si j'insère un point d'arrêt sur ma condition 

     if (PalettesListBox.Items[i].ToString() == numId)
                    {
                        PalettesListBox.Items.RemoveAt(i);
                        break;
                    }

    il retourne False. Pourtant le texte dans ma listBox est bien le meme que celui dans ma textbox


    JF Collombet ® CreateSpecificCulture

    samedi 28 avril 2018 12:05
  • Qu'est qu'il y a dans les case du ListBox?

    Attention aux caractères de contrôle invisible si cela vient d'un fichier extérieur...

    Vous pouvez remplacer par un test "contains":

     If PalettesListBox.Items[i].ToString().Contains(numId) = True Then

    dimanche 29 avril 2018 08:55
  • Un grand merci pour m'avoir accordé du temps sur ce problème. Ca marche parfaitement avec

     If PalettesListBox.Items[i].ToString().Contains(numId) = True Then


    JF Collombet ® CreateSpecificCulture

    dimanche 29 avril 2018 15:21