Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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复选框_C#_Winforms - Fatal编程技术网

C#根据与数组匹配的项选中listview复选框

C#根据与数组匹配的项选中listview复选框,c#,winforms,C#,Winforms,我是C#编程新手。我遇到了一个问题。问题是。我在winform应用程序中有listview控件。Listview有复选框。listview的第一列包含来自数据库的ID 我还有一个数组,我是这样写的 string selectCompany = "1,2,3,4"; companies = selectCompany.Split(new String[] { "," }, StringSplitOptions.None); 我只想做的是,如果listview第一列中的任何值在上面的数组中,我需要

我是C#编程新手。我遇到了一个问题。问题是。我在winform应用程序中有listview控件。Listview有复选框。listview的第一列包含来自数据库的ID

我还有一个数组,我是这样写的

string selectCompany = "1,2,3,4";
companies = selectCompany.Split(new String[] { "," }, StringSplitOptions.None);
我只想做的是,如果listview第一列中的任何值在上面的数组中,我需要检查该行。 如何做到这一点? 任何帮助都将不胜感激

更新 到目前为止,我掌握的代码是

string selectCompany = "1,2,3,4";
companies = selectCompany.Split(new String[] { "," }, StringSplitOptions.None);
foreach (DataRow row in company.Rows)
{
    string[] rows = { row["type_id"].ToString(), row["type_name"].ToString()};
    var listViewItem = new ListViewItem(rows);

    lstCompanyType.Items.Add(listViewItem);
    if (companies.Length > 0)
    {
        if (companies.Contains(row["type_id"]))
        {
            //i m JUST NOT SURE HOW TO CHECK LISTVIEW ITEMS THAT MATCHES THE ARRAY
        }
    }
    serialno++;
}
谢谢

是代码中缺少的代码片段

是代码中缺少的代码片段

是代码中缺少的代码片段


是代码中缺少的代码片段。

首先,这不是在C#中定义数组的方式。 正确的方法是

string[] array = {"1", "2", "3", etc.}
您需要获取ListView中的所有项,然后遍历ListView项

foreach(ListViewItem lvi in ListView.Items)
{
    //for your "array" use
    if(lvi.SubItems["key"].ToString() == selectCompany.Contains(lvi.SubItems["key"].ToString()))
    {
        lvi.Checked = true;
    }
}
这将设置listview项的选中项

编辑: 试试这个


首先,这不是在C#中定义数组的方式。 正确的方法是

string[] array = {"1", "2", "3", etc.}
您需要获取ListView中的所有项,然后遍历ListView项

foreach(ListViewItem lvi in ListView.Items)
{
    //for your "array" use
    if(lvi.SubItems["key"].ToString() == selectCompany.Contains(lvi.SubItems["key"].ToString()))
    {
        lvi.Checked = true;
    }
}
这将设置listview项的选中项

编辑: 试试这个


首先,这不是在C#中定义数组的方式。 正确的方法是

string[] array = {"1", "2", "3", etc.}
您需要获取ListView中的所有项,然后遍历ListView项

foreach(ListViewItem lvi in ListView.Items)
{
    //for your "array" use
    if(lvi.SubItems["key"].ToString() == selectCompany.Contains(lvi.SubItems["key"].ToString()))
    {
        lvi.Checked = true;
    }
}
这将设置listview项的选中项

编辑: 试试这个


首先,这不是在C#中定义数组的方式。 正确的方法是

string[] array = {"1", "2", "3", etc.}
您需要获取ListView中的所有项,然后遍历ListView项

foreach(ListViewItem lvi in ListView.Items)
{
    //for your "array" use
    if(lvi.SubItems["key"].ToString() == selectCompany.Contains(lvi.SubItems["key"].ToString()))
    {
        lvi.Checked = true;
    }
}
这将设置listview项的选中项

编辑: 试试这个

试试这个:

if (companies.Contains(row["type_id"])){
  listViewItem.Checked = true;  
}
试试这个:

if (companies.Contains(row["type_id"])){
  listViewItem.Checked = true;  
}
试试这个:

if (companies.Contains(row["type_id"])){
  listViewItem.Checked = true;  
}
试试这个:

if (companies.Contains(row["type_id"])){
  listViewItem.Checked = true;  
}


@TimSchmelter,我期待着这个答案。所有问题的通用答案,所有编程语言和每个人都知道的答案。我不是要一大堆代码。“对我来说,只要一个提示就足够了,我说我对C#编程相当陌生。”TimSchmelter,我期待着这个答案。所有问题的通用答案,所有编程语言和每个人都知道的答案。我不是要一大堆代码。“对我来说,只要一个提示就足够了,我说我对C#编程相当陌生。”TimSchmelter,我期待着这个答案。所有问题的通用答案,所有编程语言和每个人都知道的答案。我不是要一大堆代码。“对我来说,只要一个提示就足够了,我说我对C#编程相当陌生。”TimSchmelter,我期待着这个答案。所有问题的通用答案,所有编程语言和每个人都知道的答案。我不是要一大堆代码。对我来说,只要一个提示就足够了,我说我对C#编程相当陌生。我必须在我的
DataRow
foreach循环中使用这个循环??据我所知,listview不包含DataRow,除非你在数据集中循环。然后需要一种不同于我提供的方法是的,我正在循环dataset@King-金也给出了这个答案。我只是把它放在你的代码里,我得到了一个错误,在你的if条件下,
运算符“==”不能应用于'string'和'bool'类型的操作数
selectCompany.Contains
返回布尔值,不是吗??左侧操作数为字符串,右侧操作数为布尔值。此外,右侧总是返回
1
或“0”。即使没有错误,代码似乎也不起作用,因为如果
lvi.SubItems[“key”].ToString()
等于0或1,这将选中listview行。我必须在我的
DataRow
foreach循环中使用此循环??据我所知,listview不包含DataRow,除非您在数据集中循环。然后需要一种不同于我提供的方法是的,我正在循环dataset@King-金也给出了这个答案。我只是把它放在你的代码里,我得到了一个错误,在你的if条件下,
运算符“==”不能应用于'string'和'bool'类型的操作数
selectCompany.Contains
返回布尔值,不是吗??左侧操作数为字符串,右侧操作数为布尔值。此外,右侧总是返回
1
或“0”。即使没有错误,代码似乎也不起作用,因为如果
lvi.SubItems[“key”].ToString()
等于0或1,这将选中listview行。我必须在我的
DataRow
foreach循环中使用此循环??据我所知,listview不包含DataRow,除非您在数据集中循环。然后需要一种不同于我提供的方法是的,我正在循环dataset@King-金也给出了这个答案。我只是把它放在你的代码里,我得到了一个错误,在你的if条件下,
运算符“==”不能应用于'string'和'bool'类型的操作数
selectCompany.Contains
返回布尔值,不是吗??左侧操作数为字符串,右侧操作数为布尔值。此外,右侧总是返回
1
或“0”。即使没有错误,代码似乎也不起作用,因为如果
lvi.SubItems[“key”].ToString()
等于0或1,这将选中listview行。我必须在我的
DataRow
foreach循环中使用此循环??据我所知,listview不包含DataRow,除非您在数据集中循环。然后需要一种不同于我提供的方法是的,我正在循环dataset@King-金也给出了这个答案。我只是把它放在你的代码里,我得到了一个错误,在你的if条件下,
运算符“==”不能应用于'string'和'bool'类型的操作数
selectCompany.Contains
返回布尔值,不是吗??左侧操作数为字符串,右侧操作数为boo