Ich habe zwei RadioButton (Gewicht und Höhe) erstellt. Ich werde zwischen den beiden Kategorien wechseln. Sie haben jedoch dieselben ListBox-Controller (ListBox1 und ListBox2).
Gibt es eine gute Methode, um alle ListBox-Elemente einfacher zu löschen? Ich habe die removeAll () für ListBox nicht gefunden. Ich mag meinen komplexen Multi-Line-Stil, den ich hier gepostet habe, nicht.
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");
}
ist nicht das Gleiche wie Winform und Webform?
listBox1.Items.Clear();
Ich denke, es wäre besser, Ihre ListBoxen tatsächlich an eine Datenquelle zu binden, da es so aussieht, als würden Sie jeder Listbox die gleichen Elemente hinzufügen. Ein einfaches Beispiel wäre etwa so:
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;
}
Schreiben Sie den folgenden Code in die CS-Datei:
ListBox.Items.Clear ();
Sie sollten die Clear()
-Methode verwenden können.
while (listBox1.Items.Count > 0){
listBox1.Items.Remove(0);
}
Ich habe auf diesem Weg gemacht und arbeite ordentlich zu mir:
if (listview1.Items.Count > 0)
{
for (int a = listview1.Items.Count -1; a > 0 ; a--)
{
listview1.Items.RemoveAt(a);
}
listview1.Refresh();
}
Erläutern: Mit "Clear ()" werden nur die Elemente gelöscht. Nicht Entfernt dann das Objekt. Entfernen Sie mithilfe von RemoveAt () ein Element mit der Anfangsposition Ordnen Sie einfach die anderen Elemente neu zu [wenn Sie Element entfernen [0], item [1] verwandelt sich in [0], wodurch ein neues internes Ereignis ausgelöst wird.]... Entfernen des Endpunkts keine Auswirkung auf die Position anderer, es ist ein Stack-Verhalten. Auf diese Weise können wir alle Elemente stapeln und das Objekt zurücksetzen .