• DataGridView单元格美化


     
     
     
    #region 重绘Column、Row
     
            int _RowHeadWidth = 41;
            ///   
            /// 重绘Column、Row   
            ///   
            ///   
            /// 
            private void gdvPersonInfo_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
            {
                //如果是Column   
                if (e.RowIndex == -1)
                {
                    drawColumnAndRow(e);
                    e.Handled = true;
                    //如果是Rowheader   
                }
                else if (e.ColumnIndex < 0 && e.RowIndex >= 0)
                {
                    drawColumnAndRow(e);
                    _RowHeadWidth = e.CellBounds.Width;
                    e.Handled = true;
                }
            }
     
            ///   
            /// Column和RowHeader绘制   
            ///   
            ///   
            void drawColumnAndRow(DataGridViewCellPaintingEventArgs e)
            {
                // 绘制背景色   
                using (LinearGradientBrush backbrush =
                    new LinearGradientBrush(e.CellBounds,
                        ProfessionalColors.MenuItemPressedGradientBegin,
                        ProfessionalColors.MenuItemPressedGradientMiddle
                        , LinearGradientMode.Vertical))
                {
     
                    Rectangle border = e.CellBounds;
                    border.Width -= 1;
                    //填充绘制效果   
                    e.Graphics.FillRectangle(backbrush, border);
                    //绘制Column、Row的Text信息   
                    e.PaintContent(e.CellBounds);  // 参数的意义?   
                    //绘制边框   
                    ControlPaint.DrawBorder3D(e.Graphics, e.CellBounds, Border3DStyle.Etched);
     
                }
            }
     
            #endregion
     
     
            #region 重绘选中状态
     
            #region Row重绘前处理
     
            ///   
            /// Row重绘前处理,绘制行样式   
            ///   
            ///
            /// 
            private void gdvPersonInfo_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
            {
     
                //是否是选中状态   
                if ((e.State & DataGridViewElementStates.Selected) ==
                            DataGridViewElementStates.Selected)
                {
                    // 计算选中区域Size   
                    int width = this.gdvPersonInfo.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) + _RowHeadWidth;
     
                    Rectangle rowBounds = new Rectangle(
                      0, e.RowBounds.Top, width,
                        e.RowBounds.Height);
     
                    // 绘制选中背景色   
                    using (LinearGradientBrush backbrush =
                        new LinearGradientBrush(rowBounds,
                            Color.SteelBlue,
                            e.InheritedRowStyle.ForeColor, 90.0f))
                    {
                        e.Graphics.FillRectangle(backbrush, rowBounds);
                        e.PaintCellsContent(rowBounds);
                        e.Handled = true;       //告诉系统,已经自己重绘过了,该次绘制任务到此结束   
                    }
     
                }
            }
     
            #endregion
     
            #region Row重绘后处理
     
            ///   
            /// Row重绘后处理,目前显示效果不大   
            ///   
            ///   
            private void gdvPersonInfo_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
            {
                int width = this.gdvPersonInfo.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) + _RowHeadWidth;
                Rectangle rowBounds = new Rectangle(
                       0, e.RowBounds.Top, width, e.RowBounds.Height);
     
                if (this.gdvPersonInfo.CurrentCellAddress.Y == e.RowIndex)
                {
                    //设置选中边框,显示为虚线的聚焦框   
                    e.DrawFocus(rowBounds, true);
                }
            }
     
            #endregion
     
            #region Row刷新
            ///   
            /// 宽度改变后处理,暂时没出现效果   
            ///   
            private void gdvPersonInfo_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
            {
                if (this.gdvPersonInfo.CurrentRow != null)
                    this.gdvPersonInfo.InvalidateRow(this.gdvPersonInfo.CurrentRow.Index);
            }
     
            ///   
            /// 用户或代码滚动工作区时发生,暂没看见效果   
            ///   
            protected override void OnScroll(ScrollEventArgs e)
            {
                base.OnScroll(e);
                if (this.gdvPersonInfo.CurrentRow != null)
                    this.gdvPersonInfo.InvalidateRow(this.gdvPersonInfo.CurrentRow.Index);
            }
     
            #endregion
     
            #endregion   
  • 相关阅读:
    1052. 爱生气的书店老板
    766. 托普利茨矩阵
    643.子数组的最大平均数I
    450. 删除二叉搜索树中的节点
    1489.找到最小生成树里的关键边和伪关键边
    839相似字符串
    1631.最小体力消耗路径
    SnowFlake雪花算法源码分析&灵活改造,常见分布式ID生成解决方案
    【目标检测】三、Faster R-CNN与R-FCN
    【目标检测】二、Fast R-CNN与SVD
  • 原文地址:https://www.cnblogs.com/xxaxx/p/4630864.html
Copyright © 2020-2023  润新知