一个继承的 DataGridView

// 允许增加一个 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; } }

 

posted on 2014-03-14 10:44  z5337  阅读(587)  评论(0编辑  收藏  举报