将面板附加到TreeView控件

时间:2012-10-26 16:56:31

标签: c# winforms treeview panel

我是c#的初学者。在我的项目中,我在TreeView控件中填充了一个xml文件。如果xml文件很大,TreeView控件将显示带滚动条的数据。除此之外,每当用户双击一个节点时,我在所选节点旁边显示一个类似这样的面板..

enter image description here

滚动TreeView控件时

enter image description here

我的问题是如何将panel附加到treeView控件,以便在用户滚动TreeView控件时,面板也应该与所选节点一起移动。

1 个答案:

答案 0 :(得分:2)

好吧,很难做到,因为TreeView没有Scroll事件。它无论如何都不可靠,因为节点可以展开和折叠,从而改变节点的位置和可见性。备份计划是使用Timer。这很有效:

    private void timer1_Tick(object sender, EventArgs e) {
        var node = treeView1.SelectedNode;
        if (node == null || !node.IsVisible) panel1.Visible = false;
        else {
            panel1.Visible = true;
            var nodepos = treeView1.PointToScreen(node.Bounds.Location);
            var panelpos = panel1.Parent.PointToClient(nodepos);
            panel1.Top = panelpos.Y;
        }
    }