这是一个理论问题,所以没有代码(抱歉)。当用户选择特定节点时,我想捕捉 TreeView 控件的选定节点的位置(X 和 Y 值)。我浏览了智能感知,但没有像“位置”或“位置”这样的标签。如何做到这一点?实际上我正在尝试在所选节点旁边添加动态按钮和文本框,所以我需要节点的位置。
请帮忙。
我通过使用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);
任何其他解决此问题的方法都是受欢迎的。
当用户滚动树视图时,该位置会发生变化,IMO 而不是在选定节点的位置绘制,最好在 DrawNode 事件中自定义树节点的外观。
在这种情况下,您可以检查是否选择了节点,然后绘制其他按钮,这样您的按钮将与树视图的其余部分一起滚动。
这是示例:
http://msdn.microsoft.com/en-us/library/system.windows.forms.treeview.drawnode.aspx
我试图在 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 侧的位置。
通过杰夫