Comment supprimer tous les éléments ListBox?
J'ai créé deux RadioButton (poids et hauteur). Je vais faire basculer entre les deux catégories. Mais ils partagent les mêmes contrôleurs ListBox (listBox1 et listBox2).
Existe-t-il une bonne méthode pour effacer tous les éléments ListBox plus simples? 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");
}
7 réponses
N'est-ce pas la même chose que Winform et Webform?
listBox1.Items.Clear();
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;
}
Écrivez le code suivant dans le .fichier cs:
ListBox.Article.Effacer ();
while (listBox1.Items.Count > 0){
listBox1.Items.Remove(0);
}
J'ai fait de cette façon, et fonctionne 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: l'utilisation de "Clear ()" efface uniquement les éléments, ne pas supprime ensuite de l'objet, en utilisant RemoveAt () pour supprimer un élément de position de début il suffit de réalocaliser les autres [si vous supprimez l'élément [0], l'élément [1] se transforme en [0] déclenchant un nouvel événement interne], donc enlever de la fin pas d'affect de position des autres, c'est un comportement de pile, de cette façon, nous pouvons empiler sur tous les éléments, réinitialiser l'objet.
- VB ListBox2.Source De Données = Rien
- C# ListBox2.Source de données = null;