2

这是一个理论问题,所以没有代码(抱歉)。当用户选择特定节点时,我想捕捉 TreeView 控件的选定节点的位置(X 和 Y 值)。我浏览了智能感知,但没有像“位置”或“位置”这样的标签。如何做到这一点?实际上我正在尝试在所选节点旁边添加动态按钮和文本框,所以我需要节点的位置。

请帮忙。

4

3 回答 3

5

我通过使用TreeView.SelectedNode.Bounds.X(对于 X 位置)和TreeView.SelectedNode.Bounds.Y(对于 Y 位置)解决了这个问题,并将这些动态控件保留在面板中。

  int DistanceFromNode = 250;
  MyPanel.SetBounds(MyTreeview.SelectedNode.Bounds.X + DistanceFromNode,
        MyTreeview.SelectedNode.Bounds.Y, MyPanel.Width, MyPanel.Height);

任何其他解决此问题的方法都是受欢迎的。

于 2012-10-25T12:53:43.867 回答
0

当用户滚动树视图时,该位置会发生变化,IMO 而不是在选定节点的位置绘制,最好在 DrawNode 事件中自定义树节点的外观。

在这种情况下,您可以检查是否选择了节点,然后绘制其他按钮,这样您的按钮将与树视图的其余部分一起滚动。

这是示例:

http://msdn.microsoft.com/en-us/library/system.windows.forms.treeview.drawnode.aspx

于 2012-10-25T12:28:30.103 回答
0

我试图在 TreeView 控件的 SelectedNode 旁边显示一个对话框。我解决了这个问题,如下所示:

int x = myTreeView.SelectedNode.Bounds.X + myTreeView.SelectedNode.Bounds.Width;  
int y = myTreeView.SelectedNode.Bounds.Y + myTreeView.SelectedNode.Bounds.Height;  
Point point = new Point(x,y);   
Point absPoint = myTreeView.PointToScreen(point);

MyDialog dialog = new MyDialog();
dialog.StartPosition = FormStartPosition.Manual;
dialog.Location = absPoint;
dialog.show()

此代码显示一个对话框,位于所选树节点的 Right_Bottom 侧的位置。

通过杰夫

于 2013-02-04T10:49:53.987 回答