在C#中检查列表视图中已检查项的最佳方法是什么?
我正在为工作编写一个数据库编辑器/Bill of Materials Maker(2个单独的.exe),我有一个疯狂的问题。以下是流程在应用程序中的工作方式:打开数据库、搜索数据库、检查所需项目、发送到BOM表生成器、另存为.xls 到目前为止,我可以将选中的项目发送到BOM表生成器,但前提是我打开搜索窗口,检查项目,而不实际搜索列表。目前在数据库编辑器的搜索表单中,我有以下循环:在C#中检查列表视图中已检查项的最佳方法是什么?,c#,listview,for-loop,foreach,C#,Listview,For Loop,Foreach,我正在为工作编写一个数据库编辑器/Bill of Materials Maker(2个单独的.exe),我有一个疯狂的问题。以下是流程在应用程序中的工作方式:打开数据库、搜索数据库、检查所需项目、发送到BOM表生成器、另存为.xls 到目前为止,我可以将选中的项目发送到BOM表生成器,但前提是我打开搜索窗口,检查项目,而不实际搜索列表。目前在数据库编辑器的搜索表单中,我有以下循环: for (int i = 0; i < rowCount; i++) { if (ResultBox
for (int i = 0; i < rowCount; i++)
{
if (ResultBox1.Items[i].Checked == true)
{
//Code that creates .txt file to be loaded by the BOM Maker...
}
}
for(int i=0;i
循环可以完美地工作,但前提是我避免使用搜索功能。搜索函数确实会清除ListView,并用结果填充它,但这有什么关系呢
我得到的错误是:
InvalidArgument=未指定“22”的值
对“索引”有效。参数名称:
索引
“22”是我相对于用于从一开始填充ListView的数组检查的行
除非我需要查看我的搜索方法,否则是否有其他方法执行此操作?
我不擅长“foreach”循环,有人能给我一个意见吗
谢谢大家! 看起来主要的问题是,您从数据库结果中获取索引范围,但是您的ListView不能准确地反映用于索引范围的数据库结果 您在搜索时忘记了在某处更新某些内容 处理此问题的最简单方法可能是删除对数据库结果的依赖,并且仅依赖ListView项列表。例如:
var qry = from item in ResultBox1.Items where item.Checked select item;
foreach(var item in qry)
{
// handle checked items individually.
}
这行吗
foreach (ListViewItem item in ResultBox1.Items)
{
if (item.Checked)
{
// Do somethign with it
}
}
假设它是System.Windows.Forms.ListView
foreach(ResultBox1.SelectedItems中的变量项)
{
//做事
}
SelectedItems与CheckedItems相同吗?我想不是,我想勾选一个复选框,将项目发送给BOM表制造商。IMO.I正在尝试使用您的代码,但是对于if语句,“item”没有“.Checked”选项。你知道我该怎么做吗?啊哈!!我明白了,我用“ListViewItems”代替了“var”,现在它就像一个符咒。谢谢啊,对不起-它可能假定
项
为Object类型。我的错-我会更新我的答案。
Assuming it is a System.Windows.Forms.ListView...
foreach(var item in ResultBox1.SelectedItems)
{
//Do stuff
}