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

简介:   一、winform TreeView控件的实现方式。  ///         /// Handles the MouseMove event of the treeView1 control.

 

一、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( 10000255)),  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[ 0as 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( 10000255)),  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下载

 

目录
相关文章
Qml实用技巧:在可视元素之前半透明覆盖一个可视元素,阻止鼠标透(界面)传(防止点击到被遮挡的按钮)
Qml实用技巧:在可视元素之前半透明覆盖一个可视元素,阻止鼠标透(界面)传(防止点击到被遮挡的按钮)
Qml实用技巧:在可视元素之前半透明覆盖一个可视元素,阻止鼠标透(界面)传(防止点击到被遮挡的按钮)
|
29天前
简单讲述ondragstart、drag、ondragend、ondragenter、ondragover、ondrop、ondragleave七个与拖拽相关的监听事件,并运用实现拖拽过程放置样式变化
简单讲述ondragstart、drag、ondragend、ondragenter、ondragover、ondrop、ondragleave七个与拖拽相关的监听事件,并运用实现拖拽过程放置样式变化
|
6月前
解决uviewui向下展开菜单u-dropdown组件收起样式层叠问题
解决uviewui向下展开菜单u-dropdown组件收起样式层叠问题
|
12月前
|
开发工具 开发者
在屏幕的任意位置拖拽,控制精灵移动
在屏幕的任意位置按住拖拽,然后控制屏幕中指定的精灵移动,这个前几天@stack发过一个示例,刚好最近又有几位同学来问,说是看不懂其中的逻辑。索性就在这里详细的讲一下,原理很简单,理解透了原理,其中的积木逻辑也就很容易理解了。
81 0
|
前端开发 JavaScript 计算机视觉
css动画:文字向上移动并逐渐消失 点击按钮显示+1上移淡出
css动画:文字向上移动并逐渐消失 点击按钮显示+1上移淡出
940 0
css动画:文字向上移动并逐渐消失 点击按钮显示+1上移淡出
布局之悬浮显示更多文本并增加箭头指示效果
布局之悬浮显示更多文本并增加箭头指示效果
93 0
布局之悬浮显示更多文本并增加箭头指示效果
点击图片或者鼠标划过切换样式的另一种写法
点击图片或者鼠标划过切换样式的另一种写法
57 0
|
前端开发
html+css鼠标经过的样式变化例题
当用户移动鼠标到指定的区域或内容时,会出现什么不一样的渲染效果呢?看这篇文章一起来了解吧!
111 0
 html+css鼠标经过的样式变化例题
|
Java
swing中一些常见的鼠标事件(鼠标形状的改变、鼠标接近、按下(图标的切换)、鼠标接近、离开(字体颜色的改变)、鼠标拖拽等)还有系统托盘+对话框
swing中一些常见的鼠标事件(鼠标形状的改变、鼠标接近、按下(图标的切换)、鼠标接近、离开(字体颜色的改变)、鼠标拖拽等)还有系统托盘+对话框
420 0
swing中一些常见的鼠标事件(鼠标形状的改变、鼠标接近、按下(图标的切换)、鼠标接近、离开(字体颜色的改变)、鼠标拖拽等)还有系统托盘+对话框
QT应用编程: QSlider设置滚动块定位到鼠标点击的地方
QT应用编程: QSlider设置滚动块定位到鼠标点击的地方
457 0
QT应用编程: QSlider设置滚动块定位到鼠标点击的地方