我有一个树视图控件:
我想移动,例如 父项目2 ,向上或向下移动其子项以及我想为其父项向上/向下移动子项水平。
P.S。我已经使用数据库完成了这项工作,但是每次移动操作都会重新绑定树视图的性能问题。
答案 0 :(得分:1)
我过去使用了 here here代码的修改版本来拖放TreeView
基本上它找到了保存集合的父控件,使用ItemContainerGenerator查找包含拖动项的容器,然后将容器移动到父控件中的新位置
答案 1 :(得分:0)
也许是与自定义对象的双向绑定?您可以按顺序属性为树视图查看模型添加自定义排序器,例如...
答案 2 :(得分:0)
不能那样吗?
TreeNode node1 = treeView.Nodes[1];
TreeNode node2 = treeView.Nodes[2];
treeView.Nodes[1] = node2;
treeView.Nodes[2] = node1;
答案 3 :(得分:0)
以下示例对我来说是可行的。选择一个子节点并与其父节点交换。
TreeNode currentNode, targetNode;
currentNode = TreeView1.SelectedNode;
targetNode = currentNode.Parent;
if (currentNode.Parent != null)
{
CopyedTreeNode = (TreeNode)targetNode.Clone();
CopyedTreeNode02 = (TreeNode)currentNode.Clone();
targetNode.Text = CopyedTreeNode02.Text;
targetNode.Tag = CopyedTreeNode02.Tag;
targetNode.ImageIndex = CopyedTreeNode02.ImageIndex;
targetNode.SelectedImageIndex = CopyedTreeNode02.SelectedImageIndex;
currentNode.Text = CopyedTreeNode.Text;
currentNode.Tag = CopyedTreeNode.Tag;
currentNode.ImageIndex = CopyedTreeNode.ImageIndex;
currentNode.SelectedImageIndex = CopyedTreeNode.SelectedImageIndex;
CopyedTreeNode.Remove();
CopyedTreeNode02.Remove();
}