使用方法:初始化这个列表头 DatagridViewCheckBoxHeaderCell cbHeader = new DatagridViewCheckBoxHeaderCell(); cbHeader.Value = ""; SelectUin.HeaderCell = cbHeader; cbHeader.OnCheckBoxClicked = new CheckBoxClickedHandler(cbHeader_OnCheckBoxClicked);
填写你的全选的业务逻辑 void cbHeader_OnCheckBoxClicked(bool Status) { for (int i = 0; i < this.dataGridView1.Rows.Count; i ) { dataGridView1.Rows[i].Cells["SelectUin"].Value = Status; } }
 
 
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Drawing;using System.Windows.Forms;namespace chbDGV{  public delegate void CheckBoxClickedHandler(bool state);  public class DataGridViewCheckBoxHeaderCellEventArgs : EventArgs  {    bool _bChecked;    public DataGridViewCheckBoxHeaderCellEventArgs(bool bChecked)    {      _bChecked = bChecked;    }    public bool Checked    {      get { return _bChecked; }    }  }  class DatagridViewCheckBoxHeaderCell : DataGridViewColumnHeaderCell  {    Point checkBoxLocation;    Size checkBoxSize;    bool _checked = false;    Point _cellLocation = new Point();    System.Windows.Forms.VisualStyles.CheckBoxState _cbState =      System.Windows.Forms.VisualStyles.CheckBoxState.UncheckedNormal;    public event CheckBoxClickedHandler OnCheckBoxClicked;    public DatagridViewCheckBoxHeaderCell()    {    }    protected override void Paint(System.Drawing.Graphics graphics,      System.Drawing.Rectangle clipBounds,      System.Drawing.Rectangle cellBounds,      int rowIndex,      DataGridViewElementStates dataGridViewElementState,      object value,      object formattedValue,      string errorText,      DataGridViewCellStyle cellStyle,      DataGridViewAdvancedBorderStyle advancedBorderStyle,      DataGridViewPaintParts paintParts)    {      base.Paint(graphics, clipBounds, cellBounds, rowIndex,        dataGridViewElementState, value,        formattedValue, errorText, cellStyle,        advancedBorderStyle, paintParts);      Point p = new Point();      Size s = CheckBoxRenderer.GetGlyphSize(graphics,      System.Windows.Forms.VisualStyles.CheckBoxState.UncheckedNormal);      p.X = cellBounds.Location.X         (cellBounds.Width / 2) - (s.Width / 2);      p.Y = cellBounds.Location.Y         (cellBounds.Height / 2) - (s.Height / 2);      _cellLocation = cellBounds.Location;      checkBoxLocation = p;      checkBoxSize = s;      if (_checked)        _cbState = System.Windows.Forms.VisualStyles.          CheckBoxState.CheckedNormal;      else        _cbState = System.Windows.Forms.VisualStyles.          CheckBoxState.UncheckedNormal;      CheckBoxRenderer.DrawCheckBox      (graphics, checkBoxLocation, _cbState);    }    protected override void OnMouseClick(DataGridViewCellMouseEventArgs e)    {      Point p = new Point(e.X  _cellLocation.X, e.Y  _cellLocation.Y);      if (p.X >= checkBoxLocation.X && p.X <=        checkBoxLocation.X  checkBoxSize.Width      && p.Y >= checkBoxLocation.Y && p.Y <=        checkBoxLocation.Y  checkBoxSize.Height)      {        _checked = !_checked;        if (OnCheckBoxClicked != null)        {          OnCheckBoxClicked(_checked);          this.DataGridView.InvalidateCell(this);        }      }      base.OnMouseClick(e);    }     }}

 
  
					
				
评论