如何删除所有ListBox项目?

时间:2010-04-09 23:53:33

标签: c# wpf listbox

我创建了两个RadioButton(重量和高度)。我会在两个类别之间切换。但是它们共享相同的ListBox控制器(listBox1和listBox2)。

有没有什么好方法可以更简单地清除所有ListBox项?我找不到ListBox的removeAll()。我不喜欢我在这里发布的复杂的多行样式。

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 个答案:

答案 0 :(得分:77)

与Winform和Webform方式不同?

listBox1.Items.Clear();

答案 1 :(得分:8)

我认为将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 :(得分:2)

您应该可以使用Clear()方法。

答案 3 :(得分:2)

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

答案 4 :(得分:2)

在.cs文件中写下以下代码:

ListBox.Items.Clear();

答案 5 :(得分:0)

我是这样做的,并且对我合作:

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]触发新的内部事件], 所以从结尾删除不影响别人的位置, 它是一个Stack行为,这样我们可以堆叠所有项目,重置对象。

答案 6 :(得分:0)

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