Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从ListView控件向ListBox控件添加项_C# - Fatal编程技术网

C# 从ListView控件向ListBox控件添加项

C# 从ListView控件向ListBox控件添加项,c#,C#,在我的项目中,我试图将ListView控件的SelectedItems添加到ListBox控件中(仅项目而非子项目)。添加后,应删除列表视图控件的选定项。我非常接近,但我认为我在代码中做了一些错误,在列表视图控件中留下了单个选定项 ListView --> lvEmpDetails ListBox --> lbxEmpName 我尝试了以下代码: for (int intCount = 0; intCount < lvEmpDetails.SelectedItems.Cou

在我的项目中,我试图将
ListView
控件的
SelectedItems
添加到
ListBox
控件中(仅项目而非子项目)。添加后,应删除
列表视图
控件的选定项。我非常接近,但我认为我在代码中做了一些错误,在
列表视图
控件中留下了单个选定项

ListView --> lvEmpDetails
ListBox  --> lbxEmpName
我尝试了以下代码:

for (int intCount = 0; intCount < lvEmpDetails.SelectedItems.Count; intCount++)
{
     lbxEmpName.Items.Add(lvEmpDetails.SelectedItems[intCount].Text);  
     lvEmpDetails.SelectedItems[intCount].Remove();                  
}
for(intCount=0;intCount

请建议。

不要在迭代的同一循环中删除这些项目。将它们添加到列表中,然后删除它们:

var itemsToRemove = new List<ListViewItem>();

for (int intCount = 0; intCount < lvEmpDetails.SelectedItems.Count; intCount++)
{
     lbxEmpName.Items.Add(lvEmpDetails.SelectedItems[intCount].Text);  
     itemsToRemove.Add(lvEmpDetails.SelectedItems[intCount]);
}

foreach (var item in itemsToRemove)
{
    item.Remove();                  
}
var itemsToRemove=new List();
对于(int intCount=0;intCount
不要在迭代的同一循环中删除项目。将它们添加到列表中,然后删除它们:

var itemsToRemove = new List<ListViewItem>();

for (int intCount = 0; intCount < lvEmpDetails.SelectedItems.Count; intCount++)
{
     lbxEmpName.Items.Add(lvEmpDetails.SelectedItems[intCount].Text);  
     itemsToRemove.Add(lvEmpDetails.SelectedItems[intCount]);
}

foreach (var item in itemsToRemove)
{
    item.Remove();                  
}
var itemsToRemove=new List();
对于(int intCount=0;intCount
您可以用另一种方法:

for (int intCount = 0; intCount < lvEmpDetails.SelectedItems.Count; intCount++)
{
     lbxEmpName.Items.Add(lvEmpDetails.SelectedItems[intCount].Text);  
     lvEmpDetails.SelectedItems[intCount].Remove();    
     //Every time remove item, reduce the index           
     intCount--;   
}
for(intCount=0;intCount
您可以用另一种方法:

for (int intCount = 0; intCount < lvEmpDetails.SelectedItems.Count; intCount++)
{
     lbxEmpName.Items.Add(lvEmpDetails.SelectedItems[intCount].Text);  
     lvEmpDetails.SelectedItems[intCount].Remove();    
     //Every time remove item, reduce the index           
     intCount--;   
}
for(intCount=0;intCount
尝试“向后”循环,即:
for(int intCount=vEmpDetails.SelectedItems.Count-1;intCount>=0;intCount--)
是否为ListView控件设置了MultiSelect属性?@Thinhbk MultiSelect属性为True(默认值)。如果从SelectedItems集合中删除元素,则也会更改lvEmpDetails.SelectedItems.Count值。这也可以代替for循环:
while(lvEmpDetails.SelectedItems.Count>0){lbxEmpName.Items.Add(lvEmpDetails.SelectedItems[0].Text);lvEmpDetails.SelectedItems[0].Remove();}
抱歉,我误解了这个问题。请尝试“向后”循环,即:
for(int intCount=vEmpDetails.SelectedItems.Count-1;intCount>=0;intCount--)
是否为ListView控件设置了MultiSelect属性?@Thinhbk MultiSelect属性为True(默认值)。如果从SelectedItems集合中删除元素,则也会更改lvEmpDetails.SelectedItems.Count值。这也可以替代for循环:
while(lvEmpDetails.SelectedItems.Count>0){lbxEmpName.Items.Add(lvEmpDetails.SelectedItems[0].Text);lvEmpDetails.SelectedItems[0].remove();}
对不起,我误解了这个问题。我以前通常使用这种方法。我想我缺少了一些名称空间来包含在我的程序中以使其正常工作。它说“找不到类型或名称空间名称ListItem(是否缺少某些指令或汇编引用?)”可能我的类名有误。看看SelectedItems有什么LvemDetails。SelectedItems有intellisense中的所有方法。(对不起,我不明白你说的是什么,我正处于c#的初级阶段)我以前通常使用的这种方法。我想我缺少了一些名称空间来包含在我的程序中,以使其工作。它说“找不到类型或命名空间名称ListItem(是否缺少某些指令或汇编引用?”“可能我的类名有误。请看SelectedItems有哪些LvempDetails。SelectedItems具有intellisense中的所有方法。(抱歉,我不明白您的意思,我正处于c#的初级阶段。)