我创建了两个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");
}
答案 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)