彩色的DataGrid(WinForm)代码实现,群内某位仁兄公开的,代码贴上来

using System;
using System.Windows.Forms;
using System.Drawing;

namespace WindowsApplication1
{
 /// <summary>
 /// DataGridFormat 的摘要说明。
 /// </summary>
 ///
 public delegate void FormatCellEventHandler(object sender,DataGridFormatCellEventArgs handler);
 

 public class DataGridFormatCellEventArgs : EventArgs
 {
  private int _row;
  private int _col;
  private Font _font;
  private Brush _backbrush;
  private Brush _forebrush;
  private bool _userBaseClassDrawing;
  private string  _str;

  public DataGridFormatCellEventArgs(int row,int col,Font font,Brush backbrush,Brush forebrush)
  {
   _row=row;
   _col=col;
   _font=font;
   _backbrush=backbrush;
   _forebrush=forebrush;
   _userBaseClassDrawing=false;
   _str="";
  }

  public string GetString
  {
   get {return _str;}
   set {_str=value;}
  }
 
  public int Column
  {
   get {return _col;}
   set {_col=value;}
  }

  public int Row
  {
   get{return _row;}
   set{_row=value;}
  }

  public Font TextFont
  {
   get{return _font;}
   set{_font=value;}
  }

  public Brush BackBrush
  {
   get{return _backbrush;}
   set{_backbrush=value;}
  }

  public Brush ForeBrush
  {
   get{return _forebrush;}
   set{_forebrush=value;}
  }

  public bool UserBaseClassDrawing
  {
   get{return _userBaseClassDrawing;}
   set{_userBaseClassDrawing=value;}
  }
 }
 public class DataGridFormatableTextBoxColumn : DataGridTextBoxColumn
 {
  public event FormatCellEventHandler SetCellFormat;

  private int _col;
  
  public DataGridFormatableTextBoxColumn(int col)
  {
   _col=col;
  }

  protected override void Paint(System.Drawing.Graphics g, System.Drawing.Rectangle bounds, CurrencyManager source, int rowNum, System.Drawing.Brush backBrush, System.Drawing.Brush foreBrush, bool alignToRight)
  {
   DataGridFormatCellEventArgs e=new DataGridFormatCellEventArgs(rowNum,this._col,this.DataGridTableStyle.DataGrid.Font,
    backBrush,foreBrush);
//   if (irow!=rowNum)
//   {
//    irow=rowNum; 
//    strTemp=this.GetColumnValueAtRow(source,irow).ToString().Trim();
//   }
//   e.GetString=strTemp;
   
   if (SetCellFormat != null)
   {
    SetCellFormat(this,e);
   }
   if (e.UserBaseClassDrawing)
   {
    base.Paint (g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);
   }
   else
   {
    g.FillRectangle(e.BackBrush,bounds);
    g.DrawString(this.GetColumnValueAtRow(source,rowNum).ToString(),e.TextFont,e.ForeBrush,bounds.X,bounds.Y);

//    MessageBox.Show(this.GetColumnValueAtRow(source,rowNum).ToString());
   }
   if (e.TextFont!=this.DataGridTableStyle.DataGrid.Font)
   {
    e.TextFont.Dispose();
   }
  }

  protected override void Edit(System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Rectangle bounds, bool readOnly, string instantText, bool cellIsVisible)
  {
   //comment to make cells unable to become editable
   base.Edit(source, rowNum, bounds, readOnly, instantText, cellIsVisible);
  }

 }
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值