zoukankan      html  css  js  c++  java
  • C# treeview控件部分节点添加checkbox

    本文转载自:http://www.cnblogs.com/xiaolifeidao/p/3178569.html

    一、先初始化treeview

    this.treeView1.CheckBoxes = true;
                this.treeView1.ShowLines = false;
                this.treeView1.DrawMode = System.Windows.Forms.TreeViewDrawMode.OwnerDrawAll;
    
                this.treeView1.DrawNode += new System.Windows.Forms.DrawTreeNodeEventHandler(this.treeView_DrawNode);

    二、实现委托事件

    private void treeView_DrawNode(object sender, DrawTreeNodeEventArgs e)
            {
     
               //隐藏节点前的checkbox
                if (e.Node.ImageIndex==6)
                    HideCheckBox(this.treeView1, e.Node);
                e.DrawDefault = true;
            }

    三、隐藏的实现

    private const int TVIF_STATE = 0x8;
            private const int TVIS_STATEIMAGEMASK = 0xF000;
            private const int TV_FIRST = 0x1100;
            private const int TVM_SETITEM = TV_FIRST + 63;
            private void HideCheckBox(TreeView tvw, TreeNode node)
            {
    
                TVITEM tvi = new TVITEM();
    
                tvi.hItem = node.Handle;
    
                tvi.mask = TVIF_STATE;
    
                tvi.stateMask = TVIS_STATEIMAGEMASK;
    
                tvi.state = 0;
    
                SendMessage(tvw.Handle, TVM_SETITEM,IntPtr.Zero, ref tvi);
    
            }
    
            [StructLayout(LayoutKind.Sequential, Pack = 8, CharSet = CharSet.Auto)]
    
            private struct TVITEM
            {
                public int mask;
                public IntPtr hItem;
                public int state;
                public int stateMask;
                [MarshalAs(UnmanagedType.LPTStr)]
                public string lpszText;
                public int cchTextMax;
                public int iImage;
                public int iSelectedImage; public int cChildren; public IntPtr lParam;
            }
    
            [DllImport("user32.dll", CharSet = CharSet.Auto)]
    
            private static extern IntPtr SendMessage(IntPtr hWnd, int Msg, IntPtr wParam, ref TVITEM lParam);
  • 相关阅读:
    1093 Count PAT's(25 分)
    1089 Insert or Merge(25 分)
    1088 Rational Arithmetic(20 分)
    1081 Rational Sum(20 分)
    1069 The Black Hole of Numbers(20 分)
    1059 Prime Factors(25 分)
    1050 String Subtraction (20)
    根据生日计算员工年龄
    动态获取当前日期和时间
    对计数结果进行4舍5入
  • 原文地址:https://www.cnblogs.com/wpcnblog/p/6362666.html
Copyright © 2011-2022 走看看