web-dev-qa-db-fra.com

Comment supprimer tous les éléments de ListBox?

J'ai créé deux RadioButton (poids et taille). Je vais basculer entre les deux catégories. Mais ils partagent les mêmes contrôleurs ListBox (listBox1 et listBox2).

Y at-il une bonne méthode pour effacer tous les éléments ListBox plus simple? Je n'ai pas trouvé le removeAll () pour ListBox. Je n'aime pas mon style multi-lignes complexe que j'ai posté ici.

private void Weight_Click(object sender, RoutedEventArgs e)
    {
        // switch between the radioButton "Weith" and "Height"
        // Clear all the items first
        listBox1.Items.Remove("foot"); 
        listBox1.Items.Remove("inch");
        listBox1.Items.Remove("meter");
        listBox2.Items.Remove("foot");
        listBox2.Items.Remove("inch");
        listBox2.Items.Remove("meter");

        // Add source units items for listBox1
        listBox1.Items.Add("kilogram");
        listBox1.Items.Add("pound");

        // Add target units items for listBox2
        listBox2.Items.Add("kilogram");
        listBox2.Items.Add("pound");
    }

    private void Height_Click(object sender, RoutedEventArgs e)
    {
        // switch between the radioButton "Weith" and "Height"
        // Clear all the items first
        listBox1.Items.Remove("kilogram");
        listBox1.Items.Remove("pound");
        listBox2.Items.Remove("kilogram");
        listBox2.Items.Remove("pound");

        // Add source units items for listBox1
        listBox1.Items.Add("foot");
        listBox1.Items.Add("inch");
        listBox1.Items.Add("meter");

        // Add target units items for listBox2
        listBox2.Items.Add("foot");
        listBox2.Items.Add("inch");
        listBox2.Items.Add("meter");
    }
31
Nano HE

n'est-ce pas la même chose que Winform et Webform?

listBox1.Items.Clear();
75
balexandre

Je pense qu'il serait préférable de lier vos listBox à une source de données, car il semble que vous ajoutiez les mêmes éléments à chaque listbox. Un exemple simple serait quelque chose comme ceci:

    private List<String> _weight = new List<string>() { "kilogram", "pound" };
    private List<String> _height = new List<string>() { "foot", "inch", "meter" };

    public Window1()
    {            
        InitializeComponent();
    }        

    private void Weight_Click(object sender, RoutedEventArgs e)
    {
        listBox1.ItemsSource = _weight;
        listBox2.ItemsSource = _weight;
    }

    private void Height_Click(object sender, RoutedEventArgs e)
    {
        listBox1.ItemsSource = _height;
        listBox2.ItemsSource = _height;
    }
8
Matt Dearing

Écrivez le code suivant dans le fichier .cs:

ListBox.Items.Clear ();

2
Pulkit

Vous devriez pouvoir utiliser la méthode Clear().

2
user1017477
while (listBox1.Items.Count > 0){ 
    listBox1.Items.Remove(0);
}
2
DancesWithBamboo
  • VB ListBox2.DataSource = Rien
  • C # ListBox2.DataSource = null;
0
Paulos02

J'ai fait sur ce chemin, et travaille correctement pour moi:

if (listview1.Items.Count > 0)
        {
            for (int a = listview1.Items.Count -1; a > 0 ; a--)
            {
                listview1.Items.RemoveAt(a);
            }
                listview1.Refresh();

        }

Expliquer: utiliser "Clear ()" n'efface que les éléments, ne pas Supprime ensuite d'objet, utiliser RemoveAt () pour supprimer un élément de position de début Il suffit de réaffecter les autres [si vous supprimez l'élément [0], l'élément [1] devient [0] déclenchant un nouvel événement interne], donc supprimer de la position sans incidence de la position des autres, c'est un comportement d'empilement, ainsi nous pouvons empiler tous les éléments et rétablir l'objet .

0
Bruno