C#检查listview复选框,具体取决于与数组匹配的项目

时间:2013-10-11 10:13:16

标签: c# winforms

我是C#编程的新手。我遇到了一个问题。问题是。我在winform应用程序中有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++;
}

由于

3 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分:1)

首先,这不是您在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项目的选中项目

编辑: 试试这个

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);
    if(selectCompany.Contains(row["type_id"].ToString()))
    {
        listViewItem.Checked = true;
    }
    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++;
}

答案 2 :(得分:0)

((CheckBox)row.FindControl("YourCheckBoxIDHere")).Checked = true;

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