從數據庫中獲取數據填充樹(多層)。在單擊樹的節點時,只填充其下第一級節點,其下面的第二級節點不填充。我在填充的第一級節點的Tag中放有一Bool,當為True時,表示該節點下有子節點。現在要解決的問題是如何在不單擊節點而通過Tag中的Bool值在節點前顯示"+"號謝謝!!

解决方案 »

  1.   

    参考如下代码
    using System.Runtime.InteropServices;public struct TVITEM 
    {
        public uint mask;
        public IntPtr hItem;
        public uint state;
        public uint stateMask;
        public string pszText;
        public int cchTextMax;
        public int iImage;
        public int iSelectedImage;
        public int cChildren;
        public int lParam;
    }[DllImport("User32.DLL")]
    public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, ref TVITEM iParam);
    public const int TVIF_CHILDREN = 0x0040;
    public const int TV_FIRST = 0x1100; 
    public const int TVM_SETITEM = TV_FIRST + 63;private void button1_Click(object sender, EventArgs e)
    {
        foreach (TreeNode vTreeNodeL1 in treeView1.Nodes)
        {
            foreach (TreeNode vTreeNodeL2 in vTreeNodeL1.Nodes)
            {
                TVITEM vTVITEM = new TVITEM();
                vTVITEM.cChildren = 1;
                vTVITEM.hItem = vTreeNodeL2.Handle;
                vTVITEM.mask = TVIF_CHILDREN;
                SendMessage(treeView1.Handle, TVM_SETITEM, 0, ref vTVITEM);
            }
        }
    }private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
    {
        if ((e.Node.Level == 1) && (e.Node.Nodes.Count <= 0))
            e.Node.Nodes.Add("Zswang 路过");
    }