ICode9

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

dev的grid封装组件,拖拽初始化属性

2020-12-08 17:35:19  阅读:210  来源: 互联网

标签:gridView int Appearance dev GridView grid byte 拖拽 view


GridControl

[ToolboxItem(true)]
    public partial class UserGridControl : GridControl
    {
        public new BaseView MainView
        {
            get
            {
                return base.MainView;
            }
            set
            {
                var gridView = value as GridView;
                if (gridView == null) return;
                gridView.TopRowChanged += OnTopRowChanged;
                gridView.CustomDrawRowIndicator += gridView_CustomDrawRowIndicator;
                base.MainView = gridView;
            }
        }

        public override BaseView CreateView(string name)
        {
            var baseView = base.CreateView(name);
            if (!(baseView is GridView)) return baseView;
            var gridView = baseView as GridView;
            InitView(gridView);
            return gridView;
        }

        public void InitView(GridView gridView)
        {
            gridView.Appearance.FocusedRow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
            gridView.Appearance.FocusedRow.Options.UseBackColor = true;
            gridView.Appearance.HideSelectionRow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
            gridView.Appearance.HideSelectionRow.Options.UseBackColor = true;
            gridView.Appearance.SelectedRow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(255)))), ((int)(((byte)(255)))));
            gridView.Appearance.SelectedRow.Options.UseBackColor = true;

            gridView.OptionsBehavior.ReadOnly = true;
            gridView.OptionsBehavior.EditorShowMode = DevExpress.Utils.EditorShowMode.MouseDownFocused;
            gridView.OptionsDetail.EnableMasterViewMode = false;
            gridView.OptionsSelection.MultiSelectMode = GridMultiSelectMode.RowSelect;
            gridView.OptionsSelection.EnableAppearanceFocusedCell = false;
            //gridView.OptionsSelection.MultiSelect = true;
            gridView.OptionsView.ShowAutoFilterRow = true;
            gridView.OptionsView.ShowGroupPanel = false;
            gridView.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
            gridView.OptionsPrint.AutoWidth = false;
            gridView.IndicatorWidth = 30;
            gridView.TopRowChanged += OnTopRowChanged;
            gridView.CustomDrawRowIndicator += gridView_CustomDrawRowIndicator;
        }

        public void BestColunm(GridView gridView, bool bestColumn)
        {
            gridView.OptionsView.ColumnAutoWidth = !bestColumn;
            gridView.BestFitColumns();
        }

        private void gridView_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)
        {
            var gridView = (GridView)sender;
            if (!e.Info.IsRowIndicator || e.RowHandle < 0) return;
            e.Info.DisplayText = (e.RowHandle + 1).ToString();
            e.Info.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
        }

        private void OnTopRowChanged(object sender, EventArgs e)
        {
            GridView view = sender as GridView;
            if (view == null)
                return;
            int width = CalcIndicatorBestWidth(view);
            if ((view.IndicatorWidth - 4 < width || view.IndicatorWidth + 4 > width) && view.IndicatorWidth != width)
            {
                if (width < 30)
                    width = 30;
                view.IndicatorWidth = width;
            }
        }

        /// <summary>
        /// 计算行头宽度
        /// </summary>
        /// <param name="sender"></param>
        /// <returns></returns>
        private int CalcIndicatorBestWidth(DevExpress.XtraGrid.Views.Grid.GridView view)
        {
            Graphics graphics = new Control().CreateGraphics();
            SizeF sizeF = new SizeF();
            int count = view.TopRowIndex + ((DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo)view.GetViewInfo()).RowsInfo.Count;
            if (count == 0)
            {
                count = 30;
            }
            sizeF = graphics.MeasureString(count.ToString(), view.Appearance.Row.Font);
            return Convert.ToInt32(sizeF.Width) + 20;
        }
    }

 

标签:gridView,int,Appearance,dev,GridView,grid,byte,拖拽,view
来源: https://www.cnblogs.com/shuaimeng/p/14103778.html

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

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

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

ICode9版权所有