好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#重写DataGridView

 本文实例为大家分享了C#重写DataGridView的实例代码,供大家参考,具体内容如下

using System;

using System.Collections.Generic;

using System.Text;

using System.Drawing;

using System.Windows.Forms;

using System.Drawing.Drawing2D;

namespace CRD.WinUI.Editors

{

   public class DataGridView : System.Windows.Forms.DataGridView

   {

     private bool _CellColorOnchange= false ;

     private Color cell_color = Color.Yellow;

     private bool shifouhuasanjiao = true ;

     private Color color_grid = Color.FromArgb(236, 233, 216);

     bool click = false ;

     public DataGridView()

     {

       this .SetStyle(ControlStyles.DoubleBuffer | ControlStyles.AllPaintingInWmPaint, true );

     }

     protected override void OnCreateControl()

     {

       this .EnableHeadersVisualStyles = false ;

       this .ColumnHeadersDefaultCellStyle.BackColor = Color.FromArgb(236, 233, 216);

       this .ColumnHeadersBorderStyle = DataGridViewHeaderBorderStyle.Raised;

       //this.ColumnHeadersHeight = 20;

       this .ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing;

       this .ColumnHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;

       this .ColumnHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText;

       this .ColumnHeadersDefaultCellStyle.SelectionBackColor = System.Drawing.SystemColors.Highlight;

       this .ColumnHeadersDefaultCellStyle.SelectionForeColor = System.Drawing.SystemColors.HighlightText;

       this .RowHeadersDefaultCellStyle.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;

       this .RowHeadersDefaultCellStyle.BackColor = Color.FromArgb(236, 233, 216);

       this .RowHeadersDefaultCellStyle.ForeColor = System.Drawing.SystemColors.WindowText;

       this .RowHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.Raised;

       this .DefaultCellStyle.SelectionBackColor = Color.DarkBlue;

       this .DefaultCellStyle.SelectionForeColor = Color.DarkSlateBlue;

       this .RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;

       //this.GridColor = Color.Silver;//表格点击后颜色 表格线颜色

       this .BackgroundColor = System.Drawing.SystemColors.Window;

       this .BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;

       this .AllowUserToOrderColumns = true ;

       this .AutoGenerateColumns = true ;

       base .OnCreateControl();

     }

     Color defaultcolor;

     //移到单元格时的颜色

     protected override void OnCellMouseMove(DataGridViewCellMouseEventArgs e)

     {

       base .OnCellMouseMove(e);

       try

       {

         if (_CellColorOnchange)

           Rows[e.RowIndex].DefaultCellStyle.BackColor = cell_color;

       }

       catch (Exception)

       {

       }

     }

     //进入单元格时保存当前的颜色

     protected override void OnCellMouseEnter(DataGridViewCellEventArgs e)

     {

       base .OnCellMouseEnter(e);

       try

       {

         if (_CellColorOnchange)

           defaultcolor = Rows[e.RowIndex].DefaultCellStyle.BackColor;

       }

       catch (Exception)

       {

       }

     }

     //离开时还原颜色

     protected override void OnCellMouseLeave(DataGridViewCellEventArgs e)

     {

       base .OnCellMouseLeave(e);

       try

       {

         if (_CellColorOnchange)

           Rows[e.RowIndex].DefaultCellStyle.BackColor = defaultcolor;

       }

       catch (Exception)

       {

       }

     }

     public bool CellColorOnchange

     {

       get

       {

         return _CellColorOnchange;

       }

       set

       {

         _CellColorOnchange = value;

       }

     }

     public Color DefaultcolorSet

     {

       get

       {

         return cell_color;

       }

       set

       {

         cell_color = value;

       }

     }

     public bool Shifouhua_Sanjiao

     {

       get

       {

         return shifouhuasanjiao;

       }

       set

       {

         shifouhuasanjiao = value;

       }

     }

     public Color Content_Grid_color

     {

       get

       {

         return color_grid;

       }

       set

       {

         color_grid = value;

       }

     }

     private void InitializeComponent()

     {

       ((System.ComponentModel.ISupportInitialize)( this )).BeginInit();

       this .SuspendLayout();

       //

       // DataGridView

       //

       //this.RowTemplate.Height = 17;

         

       ((System.ComponentModel.ISupportInitialize)( this )).EndInit();

       this .ResumeLayout( false );

     }

     //RowPostPaint

     protected override void OnRowPostPaint(DataGridViewRowPostPaintEventArgs e)

     {

        

       if (shifouhuasanjiao)

       {

         using (SolidBrush b = new SolidBrush(Color.Black))

         {

           Image image = global::CRD.WinUI.Properties.Resources.未标题_1;

           //e.Graphics.DrawString("?", e.InheritedRowStyle.Font, b, e.RowBounds.Location.X + 5, e.RowBounds.Location.Y + 4);

           //e.Graphics.DrawImageUnscaled(image, e.RowBounds.Location.X + 1, e.RowBounds.Location.Y + 2, 8, 13);

           if (click)

           if (e.RowIndex == this .CurrentRow.Index) {

             e.Graphics.DrawImageUnscaled(image, e.RowBounds.Location.X + 1, e.RowBounds.Location.Y + 2, 8, 13);

           }

             

         }

       }

         

         

       base .OnRowPostPaint(e);

     }

      

      

     protected override void OnRowPrePaint(DataGridViewRowPrePaintEventArgs e)

     {

       if (shifouhuasanjiao)

       {

         using (SolidBrush b = new SolidBrush(Color.Black))

         {

           Image image = global::CRD.WinUI.Properties.Resources.未标题_1;

           //e.Graphics.DrawString("?", e.InheritedRowStyle.Font, b, e.RowBounds.Location.X + 5, e.RowBounds.Location.Y + 4);

            //e.Graphics.DrawImageUnscaled(image, e.RowBounds.Location.X + 1, e.RowBounds.Location.Y + 2, 8, 13);

         }

       }

       base .OnRowPrePaint(e);

     }

     protected override void OnCellClick(DataGridViewCellEventArgs e)

     {

       if (e.RowIndex > -1&& this .CurrentRow.Index == e.RowIndex )

       {

         click = true ;

       }

       base .OnCellClick(e);

     }

     protected override void OnCellPainting(DataGridViewCellPaintingEventArgs e)

     {

       base .OnCellPainting(e);

         

       SolidBrush b = new SolidBrush(Color.FromArgb(236, 233, 216));

       Pen whitePen = new Pen(color_grid, 1);

       if (e.ColumnIndex == -1 && e.RowIndex == -1)

       {

         using (LinearGradientBrush brush = new LinearGradientBrush(e.CellBounds, Color.Gray,

           Color.Gray, LinearGradientMode.ForwardDiagonal))

         {

           e.Graphics.FillRectangle(b, e.CellBounds);

           Rectangle border = e.CellBounds;

           border.Offset( new Point(-1, -1));

           e.Graphics.DrawRectangle(Pens.Gray, border);

         }

         e.PaintContent(e.CellBounds);

         e.Handled = true ;

       }

       else if (e.RowIndex == -1)

       {

         //标题行

         using (LinearGradientBrush brush = new LinearGradientBrush(e.CellBounds, Color.Silver,

           Color.Silver, LinearGradientMode.Vertical))

         {

           e.Graphics.FillRectangle(b, e.CellBounds);

           Rectangle border = e.CellBounds;

           border.Offset( new Point(-1, -1));

           e.Graphics.DrawRectangle(Pens.Silver, border);

           //e.Graphics.DrawRectangle(Pens.Black, border.X + 1, border.Y + 1, border.Width - 1, border.Height - 1);

         }

         e.PaintContent(e.CellBounds);

         e.Handled = true ;

       }

       else if (e.ColumnIndex == -1)

       {

         //标题列

         using (LinearGradientBrush brush = new LinearGradientBrush(e.CellBounds, Color.Silver,

           Color.Silver, LinearGradientMode.Horizontal))

         {

             

           e.Graphics.FillRectangle(b, e.CellBounds);

           Rectangle border = e.CellBounds;

           border.Offset( new Point(-1, -1));

           e.Graphics.DrawRectangle(Pens.Silver, border);

           //e.Graphics.DrawRectangle(Pens.Black, border.X+1,border.Y+1,border.Width-1,border.Height-1);

           e.Graphics.DrawString( "△" , Font,b,e.CellBounds.X,e.CellBounds.Y);

         }

         e.PaintContent(e.CellBounds);

         e.Handled = true ;

       }

       else

       {

         //Color.FromArgb(193, 193, 193)

         Rectangle border = e.CellBounds;

         border.Offset( new Point(-1, -1));

   

         e.Graphics.DrawRectangle(whitePen, border);

       }

     }

   }

}

以上就是本文的全部内容,希望对大家的学习有所帮助。

dy("nrwz");

查看更多关于C#重写DataGridView的详细内容...

  阅读:46次