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);
  • 相关阅读:
    交叉验证概述
    【Python那些事儿之十】range()和xrange()
    Numpy基础笔记
    matplotlib中使用imshow绘制二维图
    Django+Django-Celery+Celery的整合实战
    Nginx+uWSGI+Django部署web服务器
    uwsgi
    uwsgi 神器问题
    disagrees about version
    协议基础:SMTP:使用Telnet学习SMTP协议
  • 原文地址:https://www.cnblogs.com/wpcnblog/p/6362666.html
Copyright © 2011-2022 走看看