这让我疯了! 我有一个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。
另见下面的代码,很好的递归方法!
答案 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);