winform datagridview表头怎么增加复选框,点击表头的复选框,下面行的复选全选或全未选
2011-03-08 14:22
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;
namespace WindowsFormsApplication1 { publicpartialclass Form1 : Form { private DataGridView DataGridView1 =new DataGridView(); private CheckBox CheckBox1 =new CheckBox();
public Form1() { InitializeComponent(); }
privatevoid Form1_Load(object sender, EventArgs e) { CheckBox1.CheckedChanged += CheckBox1_CheckedChanged; DataGridView1.CellPainting += DataGridView1_CellPainting;
this.DataGridView1.AllowUserToResizeRows =false; this.DataGridView1.AllowUserToResizeColumns =false; this.DataGridView1.Dock = DockStyle.Fill;
this.DataGridView1.Columns.Add(new DataGridViewCheckBoxColumn()); this.DataGridView1.Columns.Add("Column2", "Column2");
for (int i =1; i <=3; i++) { this.DataGridView1.Rows.Add(0, "Row"+ i.ToString() +" Column2"); }
this.CheckBox1.Visible =false; this.CheckBox1.Text ="CheckBox";
this.Controls.Add(DataGridView1); this.Controls.Add(CheckBox1); }
privatevoid CheckBox1_CheckedChanged(object send, System.EventArgs e) { for (int i =0; i <=this.DataGridView1.RowCount -1; i++) { this.DataGridView1.Rows.SharedRow(i).SetValues(CheckBox1.Checked); } }
privatevoid DataGridView1_CellPainting(object sender, System.Windows.Forms.DataGridViewCellPaintingEventArgs e) { if (e.RowIndex ==-1& e.ColumnIndex ==0) { Point p =this.DataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true).Location; p.Offset(this.DataGridView1.Left, this.DataGridView1.Top); this.CheckBox1.Location = p; this.CheckBox1.Size =this.DataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, false).Size; this.CheckBox1.Visible =true; this.CheckBox1.BringToFront(); } }
} }
|