zoukankan      html  css  js  c++  java
  • DevExpress GridView 鼠标热点追踪 高亮显示行

    版本: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 BackColorFocusedCell = Color.White;
        public static readonly Color ForeColorDefault = Color.Black;
        public static readonly Color ForeColorSelected = Color.White;
        public static readonly Color ForeColorFocusedCell = Color.Black;
    
        public static readonly Padding CellPadding = new Padding(5, 0, 5, 0);
    
    
        public static void InitializeGridView(GridView gv)
        {
            gv.OptionsBehavior.EditorShowMode = EditorShowMode.Click;
    
            gv.OptionsBehavior.AllowAddRows = DefaultBoolean.False;
            gv.OptionsBehavior.AllowDeleteRows = DefaultBoolean.False;
            gv.OptionsBehavior.AutoPopulateColumns = false;
            gv.OptionsBehavior.AutoSelectAllInEditor = false;
    
            gv.OptionsCustomization.AllowColumnResizing = true;
            gv.OptionsCustomization.AllowFilter = false;
            gv.OptionsCustomization.AllowGroup = false;
            gv.OptionsCustomization.AllowRowSizing = false;
            gv.OptionsCustomization.AllowSort = false;
    
            gv.UserCellPadding = GridControlUtils.CellPadding;
            gv.ColumnPanelRowHeight = 28;
            gv.RowHeight = 22;
            gv.IndicatorWidth = 50;
            gv.FocusRectStyle = DrawFocusRectStyle.RowFullFocus;
            gv.OptionsView.ColumnHeaderAutoHeight = DefaultBoolean.False;
            gv.OptionsView.ColumnAutoWidth = 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.Options.UseBackColor = true;
            gv.Appearance.OddRow.ForeColor = GridControlUtils.ForeColorDefault;
            gv.Appearance.OddRow.Options.UseForeColor = true;
            gv.Appearance.EvenRow.BackColor = GridControlUtils.BackColorEven;
            gv.Appearance.EvenRow.Options.UseBackColor = true;
            gv.Appearance.EvenRow.ForeColor = GridControlUtils.ForeColorDefault;
            gv.Appearance.EvenRow.Options.UseForeColor = true;
            gv.Appearance.FocusedRow.BackColor = GridControlUtils.BackColorSelected;
            gv.Appearance.FocusedRow.Options.UseBackColor = true;
            gv.Appearance.FocusedRow.ForeColor = GridControlUtils.ForeColorSelected;
            gv.Appearance.FocusedRow.Options.UseForeColor = true;
            gv.Appearance.FocusedRow.BorderColor = GridControlUtils.BackColorSelected;
            gv.Appearance.FocusedRow.Options.UseBorderColor = true;
    
            gv.OptionsEditForm.ShowOnDoubleClick = DefaultBoolean.True;
            gv.OptionsEditForm.ShowOnEnterKey = DefaultBoolean.True;
            gv.OptionsEditForm.ShowOnF2Key = DefaultBoolean.True;
    
            gv.OptionsSelection.EnableAppearanceFocusedCell = false;
            gv.OptionsSelection.EnableAppearanceFocusedRow = true;
            gv.OptionsSelection.EnableAppearanceHideSelection = false;
            gv.OptionsSelection.MultiSelect = false;
    
            gv.ShownEditor += (sender, e) =>
            {
                var view = sender as GridView;
                view.ActiveEditor.BackColor = GridControlUtils.BackColorFocusedCell;
                view.ActiveEditor.ForeColor = GridControlUtils.ForeColorFocusedCell;
                view.ActiveEditor.BorderStyle = BorderStyles.UltraFlat;
            };
    
            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会影响居中显示或居右显示的列。

  • 相关阅读:
    html之marquee详解
    CSS盒模型
    基于windows API的手柄/键盘映射编程(一)
    阿超的烦恼来临的始端
    阿超的小目标
    程序员的800字作文
    Link to Coding
    项目经理都干些什么啊
    停不下来的英语课联想
    Markdown
  • 原文地址:https://www.cnblogs.com/yitouniu/p/12981308.html
Copyright © 2011-2022 走看看