使用停靠ToolStrip的自定义TreeView控件不能正确地偏移节点

时间:2015-08-10 20:29:30

标签: c# winforms treeview

我尝试使用停靠的ToolStrip创建自定义TreeView控件,该控件将包含4个按钮(添加/删除Root,添加/删除子项)。

我的控件如下:

public partial class MyTreeView : TreeView
{
    public MyTreeView()
    {
        InitializeComponent();

        ToolStrip ts = new ToolStrip();
        ts.Dock = DockStyle.Top;

        //Repeat this 4x for Add Parent / Delete Parent + Add Child / Delete Child
        ToolStripMenuItem tsmi1 = new ToolStripMenuItem();
        //Configure DisplayStyle, Image, Text, Name, ClickEvent

        ToolStripSeparator tss = new ToolStripSeparator();

        ts.Items.Add(tsmi1);
        ts.Items.Add(tsmi2);
        ts.Items.Add(tss);
        ts.Items.Add(tsmi3);
        ts.Items.Add(tsmi4);

        ts.Parent = this;

        this.Width = ts.Width + 10;
    }

    void tsmi1_Click(object sender, EventArgs e)
    {
        //Add a root node and N child nodes
    }
}

我已在主表单上删除了MyTreeView的实例,但是当我点击tsmi1时,它会创建父级&amp; <{1}}下面的子节点,因此您无法看到它们。

我已在Toolstrip tsBringToFront()上尝试this,但无论哪种方式都行为相同。

这似乎是一个在SO上有点常见的问题但是在我的案例中没有合适的答案。

另外,愚蠢的问题但是为什么当我切换到自定义控件的设计视图时,它继承自另一个控件,我看不到设计师呢?我只是得到了

的灰色屏幕
  

要向您的类添加组件,请从“工具箱”中拖动它们,然后使用“属性”窗口设置其属性。要为您的班级创建方法和事件,请单击此处切换到代码视图。

我期待一个空白的Treeview控件,我可以在设计器中进行自定义,而不是以编程方式创建所有这些子控件来放置它。

0 个答案:

没有答案