Как удалить все элементы ListBox? - PullRequest
31 голосов
/ 10 апреля 2010

Я создал два RadioButton (вес и рост). Я сделаю переключение между двумя категориями. Но они используют одни и те же контроллеры ListBox (listBox1 и listBox2).

Есть ли хороший способ очистить все элементы ListBox проще? Я не нашел removeAll () для ListBox. Мне не нравится мой сложный многострочный стиль, который я разместил здесь.

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 ]

77 голосов
/ 10 апреля 2010

не совпадает с Winform и Webform?

listBox1.Items.Clear();
8 голосов
/ 10 апреля 2010

Я думаю, что было бы лучше на самом деле связать ваши listBoxes с источником данных, так как похоже, что вы добавляете те же элементы к каждому списку. Простой пример будет примерно таким:

    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;
    }
2 голосов
/ 04 января 2013

Введите следующий код в файл .cs:

ListBox.Items.Clear ();

2 голосов
/ 10 апреля 2010
while (listBox1.Items.Count > 0){ 
    listBox1.Items.Remove(0);
}
2 голосов
/ 10 апреля 2010

Вы должны быть в состоянии использовать метод Clear().

0 голосов
/ 13 августа 2015
  • VB ListBox2.DataSource = Nothing
  • C # ListBox2.DataSource = null;
0 голосов
/ 21 января 2013

Я сделал по этому пути, и правильно мне работает:

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

        }

Объяснение: использование «Очистить ()» стирает только элементы, не удаляет затем из объекта, используя RemoveAt () для удаления элемента начальной позиции просто переопределить остальные [если вы удалите элемент [0], элемент [1] превратится в [0], вызывая новое внутреннее событие], поэтому удаление из финала не влияет на положение других, это поведение стека, так что мы можем укладывать поверх всех предметов, сбрасывая объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...