ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

DevExpress GridView 鼠标热点追踪 高亮显示行

2020-05-28 16:00:42  阅读:393  来源: 互联网

标签:gv GridView false Color DevExpress GridControlUtils Appearance 高亮 hottrack


版本:DevExpress 18.1 for Winform;.NET Framework 4.0。

GridControlUtils工具类的功能:

1,初始化GridView,奇偶行用不同颜色显示。默认,不支持编辑行,仅支持全行单选。

2,自动生成行号。

3,追踪鼠标并高亮显示鼠标所在行。

public static class GridControlUtils
{
    public static readonly Color BackColorOdd = Color.FromArgb(245, 248, 253);
    public static readonly Color BackColorEven = Color.FromArgb(229, 255, 229);
    public static readonly Color BackColorSelected = Color.FromArgb(59, 185, 255);
    public static readonly Color BackColorHover = Color.FromArgb(236, 197, 192);
    public static readonly Color ForeColorDefault = Color.Black;
    public static readonly Color ForeColorSelected = Color.White;

    public static void InitializeGridView(GridView gv)
    {
        gv.OptionsBehavior.AllowAddRows = DefaultBoolean.False;
        gv.OptionsBehavior.AllowDeleteRows = DefaultBoolean.False;
        gv.OptionsBehavior.AutoPopulateColumns = false;
        gv.OptionsBehavior.AutoSelectAllInEditor = false;
        gv.OptionsBehavior.Editable = false;
        gv.OptionsBehavior.ReadOnly = true;

        gv.OptionsCustomization.AllowColumnResizing = false;
        gv.OptionsCustomization.AllowFilter = false;
        gv.OptionsCustomization.AllowGroup = false;
        gv.OptionsCustomization.AllowRowSizing = false;
        gv.OptionsCustomization.AllowSort = false;

        gv.ColumnPanelRowHeight = 28;
        gv.RowHeight = 24;
        gv.IndicatorWidth = 50;
        gv.FocusRectStyle = DrawFocusRectStyle.RowFullFocus;
        gv.OptionsView.ColumnHeaderAutoHeight = DefaultBoolean.False;
        gv.OptionsView.EnableAppearanceEvenRow = true;
        gv.OptionsView.EnableAppearanceOddRow = true;
        gv.OptionsView.ShowAutoFilterRow = false;
        gv.OptionsView.RowAutoHeight = false;
        gv.OptionsView.ShowGroupPanel = false;

        gv.Appearance.HeaderPanel.Options.UseTextOptions = true;
        gv.Appearance.HeaderPanel.TextOptions.HAlignment = HorzAlignment.Center;
        gv.Appearance.HeaderPanel.TextOptions.VAlignment = VertAlignment.Center;
        gv.Appearance.HeaderPanel.TextOptions.WordWrap = WordWrap.NoWrap;
        gv.Appearance.Row.TextOptions.HAlignment = HorzAlignment.Near;
        gv.Appearance.Row.TextOptions.VAlignment = VertAlignment.Center;
        gv.Appearance.Row.TextOptions.WordWrap = WordWrap.NoWrap;
        gv.Appearance.OddRow.BackColor = GridControlUtils.BackColorOdd;
        gv.Appearance.OddRow.ForeColor = GridControlUtils.ForeColorDefault;
        gv.Appearance.EvenRow.BackColor = GridControlUtils.BackColorEven;
        gv.Appearance.EvenRow.ForeColor = GridControlUtils.ForeColorDefault;
        gv.Appearance.FocusedRow.BackColor = GridControlUtils.BackColorSelected;
        gv.Appearance.FocusedRow.ForeColor = GridControlUtils.ForeColorSelected;

        gv.OptionsSelection.EnableAppearanceFocusedCell = false;
        gv.OptionsSelection.EnableAppearanceFocusedRow = true;
        gv.OptionsSelection.EnableAppearanceHideSelection = false;
        gv.OptionsSelection.MultiSelect = false;

        gv.CustomDrawRowIndicator += (sender, e) =>
        {
            if (e.RowHandle >= 0)
            {
                var view = sender as GridView;
                e.Info.DisplayText = e.RowHandle + 1 + "";
            }
        };

        gv.RowCountChanged += (sender, e) =>
        {
            gv.InvalidateRows();
        };

        var hottrack = GridControl.InvalidRowHandle;
        gv.MouseMove += (sender, e) =>
        {
            var grid = (GridView)sender;
            var hitInfo = grid.CalcHitInfo(e.Location);
            if (hitInfo.RowHandle != hottrack)
            {
                if (hottrack >= 0)
                {
                    grid.RefreshRow(hottrack);
                }

                hottrack = hitInfo.RowHandle;

                if (hitInfo.InRow)
                {
                    grid.RefreshRow(hottrack);
                }
            }
        };

        gv.RowCellStyle += (sender, e) =>
        {
            var grid = (GridView)sender;
            if (e.RowHandle == hottrack && grid.FocusedRowHandle != hottrack)
            {
                e.Appearance.BackColor = GridControlUtils.BackColorHover;
                e.Appearance.Options.UseBackColor = true;
            }
        };

        //gv.RowStyle += (sender, e) =>
        //{
        //    var grid = (GridView)sender;
        //    if (e.RowHandle == hottrack && grid.FocusedRowHandle != hottrack)
        //    {
        //        e.Appearance.BackColor = GridControlUtils.BackColorHover;
        //        e.HighPriority = true;
        //    }
        //};
    }
}

说明:不建议使用GridView.RowStyle。因为此事件的参数e.Appearance会影响居中显示或居右显示的列。

标签:gv,GridView,false,Color,DevExpress,GridControlUtils,Appearance,高亮,hottrack
来源: https://www.cnblogs.com/yitouniu/p/12981308.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有