0

我的 win 表单中有一个树视图,它有超过 10 个节点,根据每个节点的选择,我必须在表单右侧显示适当的组框,我必须隐藏其他组框,有没有最简单的嵌套 if else 条件以外的方式。

4

1 回答 1

0

这是一个潜在的解决方案:

假设您尚未将 TreeNode(s) 的Tag 属性用于其他用途,您可以将该属性设置为相应的 GroupBox 控件。然后,订阅 TreeView 控件的NodeMouseClick 事件并使用所选节点的 Tag 属性来确定要显示哪个 GroupBox。所有其他的都应该隐藏起来。

当然,您会希望将 GroupBoxes 的引用存储在一个数组中。这样隐藏所有组框就像这样简单:

foreach(var gb in arrayOfGroupBoxes)
{
    gb.Visible = false;
}

NodeMouseClick 事件处理程序的实现可能类似于:

void TVNodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    var activeGroupBox = e.Node.Tag as GroupBox;

    foreach(var gb in arrayOfGroupBoxes)
    {            
        gb.Visible = ReferenceEquals(activeGroupBox, gb);
    }
}
于 2013-02-25T16:19:12.937 回答