WinFormsのTreeViewのNodeを同じレベルでの入れ替えの実装方法です。
今時、こんなネタやるのかと自分でも思うのですが、いざやるとなるとGoogleで検索した後、記事が見つからず。
もういいや。もう寝る。寝たら、なんか思いつくだろう。
とかヌルいことを考えたのでメモ。
- 選択中のTreeNodeのインデックスを取得
- 選択中のTreeNodeを外す
- TreeNodeをInsert
- 選択中のTreeNodeを指定し直す(そうすると連続で上下に移動させやすい)
以下のような感じ。
private void MapMoveUpToolStripMenuItem_Click(object sender, EventArgs e) { var treeNode = treeView.SelectedNode; var parentNode = treeNode.Parent; var index = parentNode.Nodes.IndexOf(treeNode); treeNode.Remove(); parentNode.Nodes.Insert(index - 1, treeNode); treeView.SelectedNode = treeNode; }
private void MapMoveDownToolStripMenuItem_Click(object sender, EventArgs e) { var treeNode = treeView.SelectedNode; var parentNode = treeNode.Parent; var index = parentNode.Nodes.IndexOf(treeNode); treeNode.Remove(); parentNode.Nodes.Insert(index + 1, treeNode); treeView.SelectedNode = treeNode; }