Meilleur auteur de réponses
WPF Supprimer un Item d'une ListBox

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
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
- Marqué comme réponse Jean-François Collombet dimanche 29 avril 2018 15:21
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
-
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
-
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);
-
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 textboxJF Collombet ® CreateSpecificCulture
-
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
- Marqué comme réponse Jean-François Collombet dimanche 29 avril 2018 15:21
-