在运行时创建的 Treeview 不显示节点

Treeview created at runtime not displaying nodes

我有两个树视图控件,一个是在设计时手动添加的,另一个是在运行时创建的。字符串 ParentNode 应该显示在面板的两侧,但它不会显示在运行时创建的树视图中。我不确定它是否是我缺少的基本内容,或者自定义控件 Accordion 是否有问题。

为什么runTimecustomTreeView不显示节点?

代码:

using ExpanderApp;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        private CustomTreeView runTimecustomTreeView = new CustomTreeView();

        public Form1()
        {
            InitializeComponent();
            CreateAccordion();
            BuildTreeViewTest1();
            BuildTreeViewTest2();
        }

        private void BuildTreeViewTest1()
        {
            //Control Added design time
            customTreeView1.Nodes.Add("ParentNode");
        }

        private void BuildTreeViewTest2()
        {
            //Control Added run time
            runTimecustomTreeView.Nodes.Add("ParentNode");
        }

        private void CreateAccordion()
        {
            Accordion accordion = new Accordion();
            accordion.Dock = DockStyle.Fill;
            Expander expander1 = new Expander();
            expander1.BorderStyle = BorderStyle.FixedSingle;
            ExpanderHelper.CreateLabelHeader(expander1, "Navigation", SystemColors.ActiveBorder);
            runTimecustomTreeView.Dock = DockStyle.Fill;
            expander1.Controls.Add(runTimecustomTreeView);
            accordion.Add(expander1);

            splitContainer1.Panel1.Controls.Add(accordion);
        }


        private void CreateContentLabel(Expander expander, string text, int height)
        {
            Label labelContent = new Label();
            labelContent.Text = text;
            labelContent.Size = new System.Drawing.Size(expander.Width, height);
            expander.Content = labelContent;
        }
    }


    //Treeview subclass to prevent double clicking checkboxes
    class CustomTreeView : TreeView
    {
        protected override void WndProc(ref Message m)
        {
            // Filter WM_LBUTTONDBLCLK
            if (m.Msg != 0x203) base.WndProc(ref m);
        }
    }
}

替换:

runTimecustomTreeView.Dock = DockStyle.Fill;

runTimecustomTreeView.Dock = DockStyle.Bottom;

您会立即看到错误是什么。您的手风琴控件没有考虑到它的子控件,只是在它们上面放了东西。