Vb6 在TreeView控件中剪切和粘贴节点?

Vb6 在TreeView控件中剪切和粘贴节点?,vb6,treeview,paste,Vb6,Treeview,Paste,我希望实现一种剪切粘贴方法来替换TreeView控件中的拖放操作。拖放在TreeView中不再有效,我相信剪切和粘贴对使用它的人来说会更容易。在这个树视图中,我将只剪切子节点。此对象只有父节点和子节点(父节点是日期,子节点是采购订单)。我不确定是否有cut属性和/或paste属性可用于treeview1.node.selected或任何我需要使用的属性 。。。单击“剪切”后,它将所选节点复制到copynode。然后删除所选节点。 因此,节点存储在copynode插槽中 这不起作用,因为copyn

我希望实现一种剪切粘贴方法来替换
TreeView
控件中的拖放操作。拖放在TreeView中不再有效,我相信剪切和粘贴对使用它的人来说会更容易。在这个树视图中,我将只剪切子节点。此对象只有父节点和子节点(父节点是日期,子节点是采购订单)。我不确定是否有
cut
属性和/或
paste
属性可用于
treeview1.node.selected
或任何我需要使用的属性

。。。单击“剪切”后,它将所选节点复制到
copynode
。然后删除所选节点。 因此,节点存储在
copynode
插槽中

这不起作用,因为
copynode
是对您刚刚删除(销毁)的引用,因此删除后
copynode
将指向
Nothing

相反;发生剪切事件时,将剪切节点的关键功能(文本、键、图标索引等)存储到模块级用户定义类型(或分隔字符串/类/变量系列)中,然后删除该节点。然后,在引发粘贴事件时,可以使用此数据作为构造新节点的基础

(剪切/粘贴事件不绑定到windows剪贴板,而是基于上下文菜单/ctrl+X/V检测的您自己的发明)

当我粘贴到节点时,我不知道如何检查节点是否有子节点


这样做是值得怀疑的。我不记得旧的VB6生物是如何工作的,但它可能像改变父母一样简单(?)。如果没有,请获取对cutee的引用,将其删除,然后将其添加到新的父级。是否最好添加右键单击上下文菜单?我只是在寻找一种拖放的替代方法。这可能更容易-剪切是第一步(创建一个ref并从树中删除;粘贴就是将其添加到新的父节点中。如果他们在不粘贴的情况下剪切或损坏(?)如果他们稍后在添加其他节点后粘贴它,或者尝试将其粘贴到子节点。您可能需要添加代码来验证目标。因此,对于剪切,可能需要为复制的节点创建一个存储位置,如
dim copynode as node
,然后单击“剪切”将所选节点复制到
copynode
。然后删除所选的node。因此,节点存储在copynode插槽中。然后,只要所选节点有子节点,它就可以通过“粘贴”命令将其粘贴到所选节点。到目前为止,这是我的思考过程,但我不确定在粘贴到节点时如何检查该节点是否有子节点。尽管所有这些都有意义,但通过在练习树视图中玩代码来实现我无法注册ctrl+x键事件(它在keydown子菜单中不起任何作用)。我在剪切旧节点时删除它时也遇到问题。
treeview1.nodes.remove
似乎没有做任何事情,不管我在它后面放了什么。要删除所选项目;
tvw.nodes.remove tvw.SelectedItem.Index
在电视的
KeyDown
事件中:
如果KeyCode=vbKeyX和(Shift和vbCtrlMask)然后msgbox“剪切”
if tv.SelectedItem.Children > 0 then
   ... got child nodes