如题.
我修改原结点aaa为zzz,怎么使其排序立即生效?看到一篇调api的,操作有困难,有没有简单点的方法?

解决方案 »

  1.   

    try:
    public class TreeViewEx : TreeView 

     public const int TV_FIRST = 4352; 
     public const int TVM_SORTCHILDRENCB = TV_FIRST + 21; 
     public delegate int CompareFuncDelegate(IntPtr lParam1, IntPtr lParam2, IntPtr lParamSort); 
     public struct TVSORTCB 
     { 
       public IntPtr hParent; 
       public CompareFuncDelegate lpfnCompare; 
       public IntPtr lParam; 
     }  public TreeViewEx() 
     { 
     }  private int CompareFunc(IntPtr lParam1, IntPtr lParam2, IntPtr lParamSort) 
     { 
       string str1 = Marshal.PtrToStringAuto(lParam1); 
       string str2 = Marshal.PtrToStringAuto(lParam2); 
       return 0; 
     }  public void Sort() 
     { 
       TVSORTCB sort; 
       sort.hParent = base.Nodes(0).Handle; 
       sort.lpfnCompare = new EventHandler(CompareFunc); 
       sort.lParam = IntPtr.Zero; 
       IntPtr ptrTVSORTCB = Marshal.AllocHGlobal(Marshal.SizeOf(sort)); 
       Marshal.StructureToPtr(sort, ptrTVSORTCB, false); 
       Message msg = Message.Create(base.Handle, TVM_SORTCHILDRENCB, IntPtr.Zero, ptrTVSORTCB); 
       base.WndProc(msg); 
       Marshal.FreeHGlobal(ptrTVSORTCB); 
       this.Refresh(); 
     } 
    }
      

  2.   

    我觉得也是。如果你的TreeView是连的数据库,那么重新刷新一下节点就搞定了。
      

  3.   

    TreeView.Sorted = true; 这个属性设置上就可以了吧