【问题标题】:Treeview created at runtime not displaying nodes在运行时创建的树视图不显示节点
【发布时间】:2015-03-13 05:43:20
【问题描述】:

我有两个树形视图控件,一个是在设计时手动添加的,另一个是在运行时创建的。字符串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);
        }
    }
}

【问题讨论】:

  • 看起来“导航”横幅(无论它是什么)与您的树控件重叠,这就是您看不到节点的原因。话虽如此,我会尝试的第一件事是删除那个东西以防万一。
  • 谢谢,它隐藏在标签下! Dock 没有停靠在我认为的位置。添加它作为答案,我会接受
  • 有时 4 只疲惫的眼睛能看到超过 2 只 :)。我发现了这个错误,因为它以前发生过很多次。

标签: c# winforms treeview


【解决方案1】:

替换:

runTimecustomTreeView.Dock = DockStyle.Fill;

runTimecustomTreeView.Dock = DockStyle.Bottom;

您将立即看到错误是什么。您的手风琴控件没有考虑其子控件,而只是在它们之上放置一些东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    相关资源
    最近更新 更多