指数超出范围。必须是非负数且小于集合的大小。 (参数'索引')'
Posted
技术标签:
【中文标题】指数超出范围。必须是非负数且小于集合的大小。 (参数\'索引\')\'【英文标题】:Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')'指数超出范围。必须是非负数且小于集合的大小。 (参数'索引')' 【发布时间】:2022-01-03 20:40:47 【问题描述】:我的 WPF APP 有问题。
当我按下向上按钮 (nach oben) 或向下按钮 (nach unten) 并且列表中没有插入任何项目时,它不应该给我错误:System.ArgumentOutOfRangeException: 'Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')'
当我已经插入一些项目时,向上和向下按钮按预期工作。
private void Verschieben -> listBox.Items.Insert(index,item);
上显示错误
namespace Lektion1Neu
public partial class MainWindow : Window
public MainWindow()
InitializeComponent();
private void Verschieben(int index)
Object item = listBox.SelectedItem;
listBox.Items.Remove(item);
listBox.Items.Insert(index,item);
listBox.SelectedIndex = index;
private void beenden_Click(object sender,RoutedEventArgs e)
Application.Current.Shutdown();
private void uebernehmen_Click(object sender, RoutedEventArgs e)
listBox.Items.Add(textBox.Text);
statusLabel.Content = "Eintrag übernommen";
private void btnNachOben_Click(object sender, RoutedEventArgs e)
int index = listBox.SelectedIndex;
if (index == 0)
index = listBox.Items.Count -1;
else
index--;
Verschieben(index);
statusLabel.Content = "Eintrag nach oben verschoben";
private void btnNachUnten_Click(object sender, RoutedEventArgs e)
int index = listBox.SelectedIndex;
if (index == listBox.Items.Count -1)
index = 0;
else
index++;
Verschieben(index);
statusLabel.Content = "Eintrag nach unten verschoben";
private void btnLöschen_Click(object sender, RoutedEventArgs e)
/*int index = listBox.SelectedIndex;
listBox.Items.RemoveAt(index);
*/
while(listBox.SelectedItems.Count >0)
listBox.Items.Remove(listBox.SelectedItems[0]);
【问题讨论】:
【参考方案1】:如果按下按钮并且没有任何项目,您可能只想什么都不做。
类似:
private void btnNachUnten_Click(object sender, RoutedEventArgs e)
if (listBox.Items.Count == 0)
return;
但通常的 wpf 方式是 ICommand,您可以使用 canexecute 来禁用按钮。这也会使它们变灰。
【讨论】:
但是当项目在列表中时它也不会像这样工作...... 那么还有另一个问题以及您描述的问题和您的陈述“当我已经插入了一些项目时,向上和向下按钮按预期工作。”不是真的。以上是关于指数超出范围。必须是非负数且小于集合的大小。 (参数'索引')'的主要内容,如果未能解决你的问题,请参考以下文章