2010-08-09 60 views
2

我想基于所选的TreeView节点将面板更改为特定的窗体(因为这是我可以查看它的唯一方式)。例如,在Visual Studio中,如果右键单击“Solution'solutionname'(1 Project)”,单击'Properties',它会在左侧出现一个树列表。当你点击一个选择时,右边的窗格会改变。如何使用TreeView更改显示?

我在前几天连续搜索了几个小时,只找到一个教程展示它如何影响webBrowser控件。

这是一个牵强例如,我可以理解:

private void tree_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
treeNode nName = e.Node;
//For testing:
string pg = "";
pg = nName.Tag;
if (pg == "Form2") display = Form2;
}

显示是一个面板。我知道这是绝对错误的,但我找不到使用我的搜索字词的任何适当的方法。

回答

1

您需要将所有面板上的Visible设置为false,除了要显示的那个设置为true

WinForms没有任何特别好的设置方法。您可以将每个节点的Tag属性设置为面板的引用(这必须以编程方式完成 - 设计师不会让您这样做),然后遍历整个树视图以设置((Panel)node.Tag).Visible = false,然后再设置((Panel)e.Node.Tag).Visible = true或者您可以单独维护列表。如果你没有很多面板,switch/if-else块也可以。

+0

那么在设计师中,我将不得不在面板上创建面板?这看起来非常忙碌,但这似乎是创建菜单的通用和常用方法。我想认为有一个更高效,更干净的方法来做到这一点。 以uTorrent为例,单击选项 - >首选项(或CTRL + P),您可以看到列表视图;在选择一个节点后,右窗格完美地改变。那些设计了面板的面板? – Salt 2010-08-09 04:33:48

+0

我会这样认为的。更改整个面板的可见性远远优于动态创建/销毁UI元素。使用面板将窗口(子窗口=控件)分组在另一个窗口中,并使它们继承可见性(和其他属性)。 – Zooba 2010-08-14 01:00:48