Подтвердить что ты не робот

Как удалить все элементы ListBox?

Я создал два 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");
    }
4b9b3361

Ответ 1

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

listBox1.Items.Clear();

Ответ 2

Я думаю, что было бы лучше фактически привязать ваши 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;
    }

Ответ 3

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

Ответ 4

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

Ответ 5

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

ListBox.Items.Clear();

Ответ 6

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

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

        }

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

Ответ 7

  • VB ListBox2.DataSource = Nothing
  • С# ListBox2.DataSource = null;