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");
}
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.Items.Clear ();
Vous devriez pouvoir utiliser la méthode Clear()
.
while (listBox1.Items.Count > 0){
listBox1.Items.Remove(0);
}
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 .