【问题标题】:C# Populating a TreeView with TabControlC# 使用 TabControl 填充 TreeView
【发布时间】:2011-07-19 17:00:47
【问题描述】:

因此,我已经能够使用 WPF/XAML 绑定中的选项卡名称填充 TreeView,但之前没有使用 C# Windows 窗体完成此操作。

我想让树视图根据打开的文件显示项目名称,然后在它下面显示选项卡控件名称(这些是静态的——一个称为编辑器,其他字段)。

稍后我将添加一个上下文菜单,但唯一的目的是通过树视图中的单击事件根据它们的状态使选项卡可见。

我的问题是我不知道如何在树视图中关联它们。我找到了这段代码,谁能告诉我我是否在正确的轨道上?

private void treeView1_AfterSelect(Object sender, TreeViewEventArgs e)
    {

        // Set the visibility of the tabpages from the treeview 
        if ((e.Action == TreeViewAction.ByMouse))
        {
            if (e.Node.Name == "Editor")
            {
                this.editForm.tabControl1.SelectedTab = editForm.Editor;
            }
            if (e.Node.Name == "Fields")
            {
                this.editForm.tabControl1.SelectedTab = editForm.Fields;
            }
        }
    }

【问题讨论】:

    标签: c# windows forms treeview


    【解决方案1】:

    您可以使用 TreeNode 的 Tag property 来保存关联的选项卡名称。

    if (e.Action == TreeViewAction.ByMouse)
    {
        TabPage p = tabControl1.TabPages[e.Node.Tag]
        tabControl1.SelectedTab = p;
    }
    

    【讨论】:

    • 您好!刚看到你的回复。我实际上让它与我在最初的问题中编辑的代码一起工作。这是错误的做法吗?
    • 它可以工作,但是,它需要您单独处理每个节点名称。如果添加节点名称或更改选项卡名称之一怎么办?我认为最灵活的解决方案是,在应用程序初始化的某个时刻,您可以根据 TabPages 动态添加 TreeItems(反之亦然)。然后您可以设置另一个名称并使用我上面提供的方法,除了名称。这种方法的一个例子是foreach(TabPage tab in tabControl1) { TreeNode node = new TreeNode(tab.Text); treeView1.Nodes.add(node); }
    猜你喜欢
    • 2013-08-25
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多