此枚举数绑定到的列表已被修改,仅在列表没有更改时才能使用枚举数
刚刚在删除和设置ListBox中的选中项的时候遇到这种错误提示。
原因是遍历ListBox中的Items的时候同时操作Item.
解决办法就是改foreach()遍历Items为for()遍历Item[i]
ListBox.ClearSelected 方法 [C#]
调用此方法等效于将 SelectedIndex 属性设置为负一 (-1)。
可以使用此方法快速取消选择列表中的所有项。
foreach( object d in listBox2.SelectedItems)
这一行有问题,当删除其中一个选项时,listBOx的所选项已经被更改了,再调用foreach,当然会有问题!
需要注意两点。
1。 GetSelected(i) 获得选中的状态
2。 循环遍历需要用倒序, 不然删除选项后, index会变化, 造成后删除的序号错误。
url: http://greatverve.cnblogs.com/archive/2012/07/31/foreach-listbox.html
原因是遍历ListBox中的Items的时候同时操作Item.
解决办法就是改foreach()遍历Items为for()遍历Item[i]
/// <summary>
/// 设置ListBox选中项
/// </summary>
/// <param name="listBox"></param>
/// <param name="selStr"></param>
private void SelListBox(System.Windows.Forms.ListBox listBox, string selStr)
{
//foreach (object obj in listBox.Items)
//{
// if (obj.ToString() == selStr)
// {
// listBox.SelectedItems.Add(obj);
// }
//}
for (int i = 0; i < listBox.Items.Count; i++)
{
if (listBox.Items[i].ToString() == selStr)
{
listBox.SelectedItems.Add(listBox.Items[i]);
}
}
}
/// 设置ListBox选中项
/// </summary>
/// <param name="listBox"></param>
/// <param name="selStr"></param>
private void SelListBox(System.Windows.Forms.ListBox listBox, string selStr)
{
//foreach (object obj in listBox.Items)
//{
// if (obj.ToString() == selStr)
// {
// listBox.SelectedItems.Add(obj);
// }
//}
for (int i = 0; i < listBox.Items.Count; i++)
{
if (listBox.Items[i].ToString() == selStr)
{
listBox.SelectedItems.Add(listBox.Items[i]);
}
}
}
调用此方法等效于将 SelectedIndex 属性设置为负一 (-1)。
可以使用此方法快速取消选择列表中的所有项。
foreach( object d in listBox2.SelectedItems)
这一行有问题,当删除其中一个选项时,listBOx的所选项已经被更改了,再调用foreach,当然会有问题!
for (int i=listBox1.Items.Count-1; i>-1; i--)
{
if (listBox1.GetSelected(i))
{
listBox1.Items.RemoveAt(i);
}
}
{
if (listBox1.GetSelected(i))
{
listBox1.Items.RemoveAt(i);
}
}
1。 GetSelected(i) 获得选中的状态
2。 循环遍历需要用倒序, 不然删除选项后, index会变化, 造成后删除的序号错误。
url: http://greatverve.cnblogs.com/archive/2012/07/31/foreach-listbox.html
我这个博客废弃不用了,今天想寻找外链的时候,突然想到这个博客权重很高。
有需要免费外链的,留言即可,我准备把这个博客变成免费的友情链接站点。