【问题标题】:how can i achieve this in c#我如何在 C# 中实现这一点
【发布时间】:2012-06-15 10:24:44
【问题描述】:

我正在开发一个windows窗体应用程序。窗体中,左边是树形菜单,右边是显示区。如何根据我在树形菜单上单击的内容更改显示区域。
(来源:126.net

我使用treenode 类来实现这样的树形菜单:

System.Windows.Forms.TreeNode treeNode27 = new System.Windows.Forms.TreeNode("basic operation");

我尝试做的是使用几个面板。每个面板都绑定到一个菜单项。通过设置visible 属性,我可以实现该目标。但这太不方便了。尤其是当我尝试设计每个面板时。 有什么好的建议吗?

【问题讨论】:

标签: c# controls custom-controls


【解决方案1】:

您可以将每个“面板”设计为新的用户控件。这样您就可以独立于主窗体自行设计所有“面板/区域”。

在您的主窗体上,为右侧区域创建一个面板,并将所有控件添加到该面板。

然后,当 TreeNode 选择事件发生时,您可以将所有用户控件设置为 .Visible = false;,但您正在显示的控件除外,并将其设置为 .Visible = true;.Dock = DockStyle.Fill;

【讨论】:

  • 我明白你的意思。我认为这是一个很好的建议。我如何将每个“面板”设计为新的用户控件(我不明白,你能提供更多细节)?这样我就可以独立设计了
  • 在解决方案资源管理器中,右键单击您的项目并选择“添加”,然后选择“用户控制”。设计,构建项目,它将出现在工具箱中。
【解决方案2】:

您需要的是在用户单击树视图时调用的事件处理程序(使用工具箱中的 TreeView)。您可以通过选择设计页面上的树视图并在属性下单击事件来做到这一点。然后根据您的需要选择 NodeMouseDoubleClick 或 NodeMouseClick。下面是捕获所选值的代码......享受......;)

  private void treeView1_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
    {
           if (treeView1.SelectedNode.Level == 2)
        {
          //text on the first level
            string text = treeView1.SelectedNode.Text;

        }
         else if (treeView1.SelectedNode.Level == 1)
        {
           //text on the second level 
            string text = treeView1.SelectedNode.Text;

        }


        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-25
    • 2017-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多