在运行时创建的 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;
您会立即看到错误是什么。您的手风琴控件没有考虑到它的子控件,只是在它们上面放了东西。
我有两个树视图控件,一个是在设计时手动添加的,另一个是在运行时创建的。字符串 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;
您会立即看到错误是什么。您的手风琴控件没有考虑到它的子控件,只是在它们上面放了东西。