同じレベルのSystem.Windows.Forms.TreeNodesの順序を変更したいと思います。treenodesの順序を変更する方法
これが.net-2.0でどのように行われるかに関する提案。
同じレベルのSystem.Windows.Forms.TreeNodesの順序を変更したいと思います。treenodesの順序を変更する方法
これが.net-2.0でどのように行われるかに関する提案。
void MoveNodeUp(TreeNode node)
{
TreeNode parentNode = node.Parent;
int originalIndex = node.Index;
if (node.Index == 0) return;
TreeNode ClonedNode = (TreeNode)node.Clone();
node.Remove();
parentNode.Nodes.Insert(originalIndex - 1, ClonedNode);
parentNode.TreeView.SelectedNode = ClonedNode;
}
TreeViewのノードコレクションを操作する必要があります。 TreeNodeCollectionを参照してください。
次の3つのツリーノードを持っていて、例えば、前に最後の1を移動させたい場合は:(注意:コードをテストしたが、考え方を示していない)
var lastNode = MyTreeView.Nodes[2];
MyTreeView.Nodes.Remove(lastNode);
MyTreeView.Nodes.Insert(0, lastNode);
が何をだそのI書かれた:
public void MoveNode(TreeView tv, TreeNode node, bool up)
{
if ((node.PrevNode == null) && up) {
return;
}
if ((node.NextNode == null) && !up) {
return;
}
int newIndex = up ? node.Index - 1 : node.Index + 1;
var nodes = tv.Nodes;
if (node.Parent != null) {
nodes = node.Parent.Nodes;
}
nodes.Remove(node);
nodes.Insert(newIndex, node);
}
私はこのコードを書いています。このコードはクローン作成を必要としません。
私の場合のために、それは、兄弟ノードで1つ上の位置に移動させていますが、ノードのクローンを作成している理由
TreeNode selectedNode = treeViewChain.SelectedNode;
if (selectedNode != null && selectedNode.Index > 0)
{
TreeNode parent = selectedNode.Parent;
int selectedIndex = selectedNode.Index;
selectedNode.Remove();
parent.Nodes.Insert(selectedIndex - 1, selectedNode);
treeViewChain.SelectedNode = selectedNode;
}
を適合させることができますか?取り除いてはいけませんので、参照は有効です。 – JMcCarty
@JMcCarty - 修正 –