Ответ 1
не совпадает с форматом Winform и Webform?
listBox1.Items.Clear();
Я создал два 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");
}
не совпадает с форматом Winform и Webform?
listBox1.Items.Clear();
Я думаю, что было бы лучше фактически привязать ваши 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;
}
Вы должны использовать метод Clear()
.
while (listBox1.Items.Count > 0){
listBox1.Items.Remove(0);
}
Напишите следующий код в файле .cs:
ListBox.Items.Clear();
Я сделал это так и правильно работал со мной:
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], вызывая новое внутреннее событие], поэтому удаление из финала не влияет на положение других, это поведение стека, таким образом, мы можем обрезать все элементы, перезагружая объект.