我对this post有疑问。
我有一个从数据库填充的树视图。我隐藏了未使用此代码检查的复选框:
for (int i = 0; i < _adminTv.Nodes.Count; i++)
{
HideChecks(_adminTv.Nodes[i]);
}
private void HideChecks(TreeNode tn)
{
if (!tn.Checked)
{
tn.SetIsCheckBoxVisible(false);
}
for (int i = 0; i < tn.Nodes.Count; i++)
{
HideChecks(tn.Nodes[i]);
}
}
我想用新的数据库查询重新填充此树,并保持隐形复选框不可见。此外,我想取消选中所有已检查的节点。所以我使用了这段代码:
for (int i = 0; i < _adminTv.Nodes.Count; i++)
{
UncheckTreeView(_adminTv.Nodes[i]);
}
private void UncheckTreeView(TreeNode tn)
{
if (tn.Checked)
{
tn.Checked = false;
}
if (!tn.IsCheckBoxVisible())
{
tn.SetIsCheckBoxVisible(false);
}
for (int i = 0; i < tn.Nodes.Count; i++)
{
UncheckTreeView(tn.Nodes[i]);
}
}
但是,虽然在调用此方法之前,隐形节点确实是不可见的(我测试过它),但在UncheckTreeView方法中,第二个检查节点是否可见的If总是假的。
任何解决方案?