前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >winfrom 树形控件如何实现鼠标经过节点时光标颜色改变效果

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

作者头像
跟着阿笨一起玩NET
发布2018-09-18 15:24:47
1.8K1
发布2018-09-18 15:24:47
举报
文章被收录于专栏:跟着阿笨一起玩NET
代码语言:javascript
复制
一、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下载
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2012-06-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档