// 允许增加一个 checkbox 列
public class DgvBase : DataGridViewX
{
protected override void OnColumnAdded(DataGridViewColumnEventArgs e)
{
base.OnColumnAdded(e);
//if (e.Column.ValueType == typeof(int) || e.Column.ValueType == typeof(long) || e.Column.ValueType == typeof(float)
// || e.Column.ValueType == typeof(double) || e.Column.ValueType == typeof(decimal))
if (e.Column.ValueType == typeof(decimal)) e.Column.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;
}
protected override void OnRowPostPaint(DataGridViewRowPostPaintEventArgs e)
{
base.OnRowPostPaint(e); //this.Rows[e.RowIndex].Selected ? this.RowHeadersDefaultCellStyle.SelectionForeColor :
TextRenderer.DrawText(e.Graphics, (e.RowIndex + 1).ToString(), this.RowHeadersDefaultCellStyle.Font, new Rectangle(e.RowBounds.Location.X, e.RowBounds.Location.Y, this.RowHeadersWidth - 4, e.RowBounds.Height), this.RowHeadersDefaultCellStyle.ForeColor, TextFormatFlags.VerticalCenter | TextFormatFlags.Right);
}
protected override void OnCellClick(DataGridViewCellEventArgs e)
{
base.OnCellClick(e);
// 设置此列在点击时可改变值
DataGridViewColumn dc = this.Columns [e.ColumnIndex ];
if (dc.ReadOnly && dc.Name == "IsSelected")
this[e.ColumnIndex, e.RowIndex].Value = !Generic.ToBoolean(this[e.ColumnIndex, e.RowIndex].Value);
}
}
public static class DgvExtensions
{
public static void DataBind(this DgvBase dgv, DataTable dt)
{
if (dt != null && !dt.Columns.Contains("IsSelected"))
{
DataColumn dc = dt.Columns.Add("IsSelected", typeof(bool));
dc.SetOrdinal(0);
}
dgv.DataSource = dt;
}
}