示例#1
0
        /// <summary>Gets the node values.</summary>
        /// <param name="node">The <see cref="TreeNode"/> instance for which to get details.</param>
        /// <param name="mask">The mask of items to get.</param>
        /// <param name="stateMask">The mask of states to get.</param>
        /// <returns>A <see cref="TVITEMEX"/> structure with the information.</returns>
        public static TVITEMEX GetItem(this TreeNode node, TreeViewItemMask mask = (TreeViewItemMask)0x13FF, TreeViewItemStates stateMask = (TreeViewItemStates)0xFFFF)
        {
            var tvItem = new TVITEMEX
            {
                hItem     = node.Handle,
                mask      = mask.SetFlags(TreeViewItemMask.TVIF_HANDLE).SetFlags(TreeViewItemMask.TVIF_TEXT, false),
                stateMask = stateMask
            };

            SendMessage(node.TreeView.Handle, TreeViewMessage.TVM_GETITEM, default, ref tvItem);
        /// <summary>
        /// Set a node's height. Will throw an error if the Node has not yet been added to a TreeView,
        /// as it's handle will not exist.
        /// </summary>
        /// <param name="tn">TreeNode to work with</param>
        /// <param name="height">Height in multiples of ItemHeight</param>
        public static void SetHeight(this TreeNode tn, int height)
        {
            TVITEMEX tvix = new TVITEMEX
            {
                mask      = (uint)(Mask.Handle | Mask.Integral),
                hItem     = tn.Handle,
                iIntegral = height
            };

            SendMessage(tn.TreeView.Handle, TVM_SETITEM, IntPtr.Zero, ref tvix);
        }
        /// <summary>
        /// Get a node's height. Will throw an error if the Node has not yet been added to a TreeView,
        /// as it's handle will not exist.
        /// </summary>
        /// <param name="tn">TreeNode to work with</param>
        /// <returns>Height in multiples of ItemHeight</returns>
        public static int GetHeight(this TreeNode tn)
        {
            TVITEMEX tvix = new TVITEMEX
            {
                mask      = (uint)(Mask.Handle | Mask.Integral),
                hItem     = tn.Handle,
                iIntegral = 0
            };

            SendMessage(tn.TreeView.Handle, TVM_GETITEM, IntPtr.Zero, ref tvix);
            return(tvix.iIntegral);
        }
示例#4
0
 /// <summary>Sets the <see cref="TVITEM"/> values.</summary>
 /// <param name="node">The <see cref="TreeNode"/> instance for which to set details.</param>
 /// <param name="tvItem">The <see cref="TVITEMEX"/> instance.</param>
 public static bool SetItem(this TreeNode node, ref TVITEMEX tvItem) => SendMessage(node.TreeView.Handle, TreeViewMessage.TVM_SETITEM, default, ref tvItem).ToInt32() != 0;
 //private static extern IntPtr SendMessage(IntPtr hwnd, uint msg, IntPtr wp, IntPtr lp);
 private static extern IntPtr SendMessage(IntPtr hwnd, uint msg, IntPtr wp, ref TVITEMEX lp);