2011-01-06 18 views
0
TreeNode[] nodes = this.treeview.Nodes.Find(node.Text, true); 
     if (nodes.Length > 0) 
     { 
     int i = nodes[0].Index; 
     if (nodes.Length > 0) 
      this.treeview.Nodes.Remove(nodes[0]); 
     this.treeview.Nodes.Insert(i, nodes[0]); 
     } 

ツリービュー挿入性の問題、私はこのコードを試み

が、ノードノード[0]特定のインデックスに挿入されていません。

代わりに最後に追加しています。

はい、私はtreeviewsorterを使用します。

インサート

又はtreeviewsorterと効果的に挿入する使用を使用せずにノードを挿入する方法の任意のアイデアは?

+0

...コードを正しくフォーマットしてください – erikkallen

+0

何を達成しようとしていますか?すべてのディープ・レベルでノードを探していて、ルート・レベルのノードからノードを削除しているようです。それは私に少し奇妙に聞こえる... – digEmAll

+0

私は答えを知っている。ヒント:それは木です。 –

答えて

0

カスタム比較者にTreeViewNodeSorterプロパティを設定した場合、TreeViewノードは自動的にその比較者を使用してソートされます。

したがって、位置はコンペアラマーを使用して決定されるため、ノードを別の位置に挿入することはできません。

しかし、特定のケースでは、ノードを削除して元の位置に戻しているので、実際にはノードが元に戻ってしまったとします。

これ、(私は推測しているが)いくつかの理由である可能性があり:

  1. あなたの比較子の実装は、それ自体をソート(のようなNode.Index
  2. に依存プロパティを使用して間違っている、またはperaphs Find()で取得したノードは、ルートよりも低いレベルに属しますが、ルートノードから削除してそのレベルに追加しようとします。
  3. その他の理由コード...
関連する問題