循环遍历多个ListView(在TabControl中)并清除复选框c#

时间:2013-12-02 12:12:49

标签: c# listview checkbox tabcontrol listviewitem

这让我疯了! 我有一个TabControl,它有5个标签。每个选项卡都有一个带有多个复选框的ListView。 现在我想将TabControl传递给一个方法,并为每个ListView - 清除所有复选框。

看起来不那么难,但确实如此!

foreach (var myItem in tabControl1.Controls) {
    if (myItem is ListView) { // surprisingly doesnt work...
        // loop through ListView find CheckBox...
    }
}

if语句有什么问题?

编辑:此代码有效!嗯?

foreach (ListViewItem listItem in listView1.Items)
{
    listItem.Checked = false;
} 

解决方案:我一直在寻找“CheckBox”,但它实际上是一个ListViewItem,其属性Checked = true / false。

另见下面的代码,很好的递归方法!

1 个答案:

答案 0 :(得分:2)

递归:

void ClearAllCheckBoxes(Control ctrl)
{
    foreach (Control childControl in ctrl.Controls)
        if (childControl is ListView)
            foreach (ListViewItem item in ((ListView)childControl).Items)
                item.Checked = false;
        else ClearAllCheckBoxes(childControl);
}

并使用:

ClearAllCheckBoxes(tabControl1);