winfrom 树形控件如何实现鼠标经过节点时光标颜色改变效果

 

一、winform TreeView控件的实现方式。 

 /// <summary>
        /// Handles the MouseMove event of the treeView1 control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.Windows.Forms.MouseEventArgs"/> instance containing the event data.</param>
        /// <remarks></remarks>
        private void treeView1_MouseMove(object sender, MouseEventArgs e)
        {
            TreeView _TreeView = (TreeView)sender;
            //通过鼠标的e.X和e.Y坐标来获取TreeNode。
            TreeNode _Node = treeView1.GetNodeAt(e.X, e.Y);
            if (_Node != null)
            {
                //防止出现闪烁。
                if (_TreeView.Tag == null || !_TreeView.Tag.Equals(_Node))
                {
                    _TreeView.Refresh();
                    Graphics _Graphics = Graphics.FromHwnd(_TreeView.Handle);
                    //_Graphics.FillRectangle(new SolidBrush(Color.FromArgb(100, 0, 0, 255)), _Node.Bounds);
                    //重绘整行节点。
                    _Graphics.FillRectangle(new SolidBrush(Color.FromArgb(100, 0, 0, 255)), new Rectangle(new Point(0, _Node.Bounds.Y), new Size(this.treeView1.Width, _Node.Bounds.Height)));
                    _Graphics.Dispose();
                    _TreeView.Tag = _Node;
                }
            }

        }

 参考文章:http://topic.csdn.net/u/20091216/14/8df3c649-fb8b-4ee5-89f2-6ab8ad03f9cf.html
二、winform Devexpress TreeList控件的实现方式。
/// <summary>
        /// Handles the MouseMove event of the treeList1 control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.Windows.Forms.MouseEventArgs"/> instance containing the event data.</param>
        /// <remarks></remarks>
        private void treeList1_MouseMove(object sender, MouseEventArgs e)
        {
            TreeList _TreeView = (TreeList)sender;
            Point mousePosition = Control.MousePosition;
            if (_TreeView.State == TreeListState.Regular)
            {
                TreeListHitInfo hitInfo = _TreeView.CalcHitInfo(new Point(e.X, e.Y));
                if (hitInfo.HitInfoType == HitInfoType.Cell)
                {
                    //_TreeView.SetFocusedNode(hitInfo.Node);
                    //根据鼠标的e.X和e.Y来获取TreeListNode;而不能直接通过 _TreeView.FocusedNode来获取。
                    TreeListNode _Node = hitInfo.Node;
                    //TreeListNode _Node = _TreeView.FocusedNode;// Winfrom 程序中这样获取的this.treeList1.GetNodeAt(e.X, e.Y);
                    Rectangle r = (_TreeView.ViewInfo.RowsInfo[_Node].Cells[0] as DevExpress.XtraTreeList.ViewInfo.CellInfo).Bounds;
                    if (_Node != null)
                    {
                        //if (!_Node.Checked)
                        //{
                            //防止出现闪烁。
                            if (_TreeView.Tag == null || !_TreeView.Tag.Equals(_Node))
                            {
                                _TreeView.Refresh();
                                Graphics _Graphics = Graphics.FromHwnd(_TreeView.Handle);
                                // _Graphics.FillRectangle(new SolidBrush(Color.FromArgb(100, 0, 0, 255)), r);
                                //重绘整行节点。
                                _Graphics.FillRectangle(new SolidBrush(Color.FromArgb(100, 0, 0, 255)), new Rectangle(new Point(0, r.Y), new Size(_TreeView.Width, r.Height)));
                                _Graphics.Dispose();
                                _TreeView.Tag = _Node;
                            }
                        //}
                    }
                }
            }
        }

 
一、关于Devexpress控件的TreeListNode如何得到Point的问题。

可以参考http://www.devexpress.com/Support/Center/p/Q203877.aspx

 二、关于Devexpress控件在MouseOver事件中如何得到当前鼠标的TreeListNode

可以参考http://community.devexpress.com/forums/t/82086.aspx

 演示效果:演示Demo下载

 

时间: 2024-10-27 04:40:54

winfrom 树形控件如何实现鼠标经过节点时光标颜色改变效果的相关文章

JavaScript面向对象技术实现树形控件

javascript|对象|控件 树形控件是一种人们熟悉的用户界面控件,广泛地用来显示层次型数据. 树形控件具有独特的扩展和折叠分支的能力,能够以较小的空间显示出大量的信息,一目了然地传达出数据之间的层次关系.凡是熟悉图形用户界面的用户,都能够自如地运用树形控件. 图一:用JavaScript实现的树形控件 HTML本身不支持树形控件,但我们可以通过一些JavaScript脚本代码实现.为了提高控件的可重用性,我们要充分运用JavaScript对面向对象编程技术的支持.本文的树形控件适用于IE

教你如何使用JSP面向对象web编程技术实现树形控件

js|web|编程|对象|控件 树形控件是一种人们熟悉的用户界面控件,广泛地用来显示层次型数据. 树形控件具有独特的扩展和折叠分支的能力,能够以较小的空间显示出大量的信息,一目了然地传达出数据之间的层次关系.凡是熟悉图形用户界面的用户,都能够自如地运用树形控件. 图一:用java script实现的树形控件 HTML本身不支持树形控件,但我们可以通过一些java script脚本代码实现.为了提高控件的可重用性,我们要充分运用java script对面向对象编程技术的支持.本文的树形控件适用于I

jQuery树形控件zTree使用小结_jquery

0 zTree简介  树形控件的使用是应用开发过程中必不可少的.zTree 是一个依靠 jQuery 实现的多功能 "树插件".优异的性能.灵活的配置.多种功能的组合是 zTree 最大优点.  0.0 zTree的特点 •最新版的zTree将核心代码按照功能进行了分割,不需要的代码可以不用加载,如普通使用只需要加载核心的jquery.ztree.core-3.5.js,需要使用勾选功能加载jquery.ztree.excheck-3.5.min.js,需要使用编辑功能加载jquery

树形控件TreeView的序列化

treeview|控件 最近自己做了一个小软件,一个文件浏览器,与windows的资源管理器相比,可以查看文件内容,而不用外部程序打开,支持多种文件格式,以后准备加入基于内容的搜索(打算用开源的dotLucene组件).其中需要将树形控件序列化,查了很多资料,在codeproject找到一个vb.net写的,找了一个代码转换器转成了C#,修改了一下,改成了二进制序列化.贴在下面供需要的参考. 原文地址: http://www.codeproject.com/vb/net/TreeViewData

c#中如何在form的webbrowser控件中获得鼠标坐标

以下是对c#中如何在form的webbrowser控件中获得鼠标坐标的实现方法进行了详细的分析介绍,需要的朋友可以参考下   如图这样,其实是要插入一个time的控件,这样才能使得坐标值会根据鼠标的移动而不停变化.time插件中写 复制代码 代码如下: private void timer1_Tick(object sender, EventArgs e)         {             if (webBrowser1.Bounds.Contains(this.PointToClie

mfc-MFC 组合框下拉弹出树形控件该怎么实现,自己菜鸟一个

问题描述 MFC 组合框下拉弹出树形控件该怎么实现,自己菜鸟一个 组合框控件和树形控件都能单独实现,就是将两者结合起来不知道怎么弄 解决方案 MFC组合控件的一个小问题 解决方案二: 可以捕获下拉点击事件,然后把树形控件移动过去,显示出来,这样实现简单点 解决方案三: 把树形框放到另外一个无边框窗口里,单击组合框时创建窗口移动过去

MFC 树形控件CTreeCtrl显示文件路径及文件

在上篇文章中简单讲述了"MFC单文档分割窗口显示图片",但是我想实现的是左边显示图片的路径,右边显示图片的情况,所以这里需要讲述如何使用控件List Control和Tree Control.    CListCtrl(列表控件):可以用大图标.小图标.列表.报表四种不同方式显示一组信息.    CTreeCtrl(树形控件):用树结构显示一组信息,并能反映这些信息的层次关系.首先声明:该文章主要是数字图形处理知识并结合liujiannan_1987的上传资源讲述,在此感谢该作者:ht

不知道怎么在列表框中显示树形控件节点的信息(包括书名,作者.....)?

问题描述 不知道怎么在列表框中显示树形控件节点的信息(包括书名,作者.....)? 解决方案 用CTreeCtrl控件,你拿到TVN_SELCHANGED对应的信息后,就可以显示了.可以参考下面例子 void CMFC_TreeCRTLDlg::OnSelchangedTree1(NMHDR* pNMHDR, LRESULT* pResult) { NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR; // TODO: Add your control

为树形控件添加弹出式菜单,并跟踪所选择的项

[cpp] view plaincopy   <span style="font-size:24px;color:#ff0000;">为树形控件添加弹出式菜单,并跟踪所选择的项</span>   [cpp] view plaincopy   动态弹出式菜单   [cpp] view plaincopy    //获取当前右键的位置   CPoint pt;      GetCursorPos(&pt);      m_tree.ScreenToClien