2010-04-09 99 views
30

Creé dos RadioButton (peso y altura). Cambiaré entre las dos categorías. Pero comparten el mismo ListBox Controllers (listBox1 y listBox2).¿Cómo eliminar todos los elementos de ListBox?

¿Hay algún buen método para borrar todos los elementos de ListBox más simples? No encontré removeAll() para ListBox. No me gusta mi estilo complejo de líneas múltiples que publiqué aquí.

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"); 
    } 
+2

Me gusta mucho la respuesta de Matt Dearing. Parece una mejor técnica de programación para este uso específico, que solo hacer el método Items.Clear(). –

Respuesta

70

¿No es lo mismo que la forma de Winform y Webform?

listBox1.Items.Clear(); 
+0

Esta es una respuesta pobre porque fallaste al explicar que no debería estar usando 'Items.Add' de esa manera en primer lugar. Vea la respuesta de Matt Dearning para una solución mucho mejor. –

+2

la pregunta es "¿Hay algún buen método para borrar todos los elementos de ListBox más simples?" es una pregunta más simple, ¡tiene una respuesta simple! La respuesta de Matt es por la pregunta "¿Estoy haciendo lo correcto aquí?" – balexandre

+15

Todo se reduce a un sentido de responsabilidad de la comunidad. Considere: Un niño de ocho años se me acerca con un arma cargada (no un juguete). Él claramente no está prestando atención a dónde lo está señalando. Él me pregunta cómo hacerlo disparar. En este caso, "simplemente jale este gatillo" es una respuesta pobre. Una mejor respuesta sería explicar la seguridad de las armas. Para un niño de ocho años, la mejor respuesta sería quitar el arma e ir a buscar a sus padres. Lo que está en juego es mucho más bajo aquí, pero el principio es el mismo: ** Alentar el código mal escrito causa daño real y dolor real. ** Tiene un costo real para todos nosotros. –

2
while (listBox1.Items.Count > 0){ 
    listBox1.Items.Remove(0); 
} 
+1

¿Es esto esencialmente lo que hace ListBox.Items.Clear()? – Josh

8

creo que sería mejor para unirse realidad sus cuadros de lista a una fuente de datos, ya que parece que va a agregar los mismos elementos a cada cuadro de lista. Un ejemplo sencillo sería algo como esto:

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; 
    } 
+1

incluso puede hacer en 1 línea: listBox1.ItemsSource = listBox2.ItemsSource = _weight; :) – balexandre

2

escribe el siguiente código en el archivo .cs:

ListBox.Items.Clear();

0

que hice en esta forma, y ​​funciona correctamente para mí:

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

     } 

Explicación: el uso de "Clear()" se borran sólo los elementos, no elimina entonces del objeto, utilizando RemoveAt() para eliminar un elemento de la posición inicial acaba de reasignar los otros [si elimina el elemento [0], elemento [1] se convierte en [0] activando un nuevo evento interno], eliminando de la posición final no afecta a los demás, es a Comportamiento de la pila, de esta manera podemos apilar sobre todos los elementos, restablecer el objeto.

+0

No entiendo por qué preguntas acerca de borrar un listBox, pero tu respuesta es usar una vista de lista. – Burgo855

0
  • VB ListBox2.DataSource = Nada
  • C# ListBox2.DataSource = null;
Cuestiones relacionadas