IDictionaryEnumerator myEnumerator=_sortedlist.GetEnumerator();
while(myEnumerator.MoveNext())
{
Emp objA=(Emp)_sortedlist[myEnumerator.Key];
if((string)(this.lstEmp.SelectedItem)==objA.Name)
{
for(int count=0;count<this.lstEmp.SelectedItems.Count;count++)
{
this.lstEmp.Items.Remove(this.lstEmp.SelectedItems[count]);
}
_sortedlist.Remove(this.txtEmployeeName.Text); }
}
如以上代码,使用hashtable,想实现删除列表框中的Item的同时删除hashtable中的值,但是我这样写会报异常:System.InvalidOperationException: 集合已修改;枚举操作可能不会执行。
不知道怎么解决?
while(myEnumerator.MoveNext())
{
Emp objA=(Emp)_sortedlist[myEnumerator.Key];
if((string)(this.lstEmp.SelectedItem)==objA.Name)
{
for(int count=0;count<this.lstEmp.SelectedItems.Count;count++)
{
this.lstEmp.Items.Remove(this.lstEmp.SelectedItems[count]);
}
_sortedlist.Remove(this.txtEmployeeName.Text); }
}
如以上代码,使用hashtable,想实现删除列表框中的Item的同时删除hashtable中的值,但是我这样写会报异常:System.InvalidOperationException: 集合已修改;枚举操作可能不会执行。
不知道怎么解决?
while(myEnumerator.MoveNext())
{
Emp objA=(Emp)_sortedlist[myEnumerator.Key];
if((string)(this.lstEmp.SelectedItem)==objA.Name)
{
for(int count=0;count<this.lstEmp.SelectedItems.Count;count++)
{
this.lstEmp.Items.Remove(this.lstEmp.SelectedItems[count]);
}
}
ArrayList objArr=new ArrayList(_sortedlist.Keys);
}
_sortedlist.Remove(this.txtEmployeeName.Text);
这样做以后,不如说有两个Items,我删除下面那个以后,上一个Item就不能删除了。???怎么回事???
如:ArrayList arr = new ArrayList(); //作为过渡
HashTable hs = new HashTable(); //欲改变的HashTable
//hs.Add(..);//给hs添加元素
foreach(string k in hs.Keys)
{
arr.Add(k);
}
foreach(string k in arr)
{
Emp objA=(Emp)_sortedlist[k];
if((string)(this.lstEmp.SelectedItem)==objA.Name)
{
hs.Remove(k);
}
}
//若是自定义的,做法同
解决方法就是按ojlovecd所说的方法,至于你上面的问题没法回答,看不懂代码
{
Emp objA = (Emp)_sortedlist[i];
if((string)(this.lstEmp.SelectedItem)==objA.Name)
{
for(int count=0;count <this.lstEmp.SelectedItems.Count;count++)
{
this.lstEmp.Items.Remove(this.lstEmp.SelectedItems[count]);
}
_sortedlist.Remove(this.txtEmployeeName.Text); }
}
按这样来修改,提示异常:“System.InvalidOperationException: 指定的 IComparer 引发异常。 ---> System.ArgumentException: 对象的类型必须是 String。”
这个是怎么回事?