博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

winform datagridview表头增加复选框

Posted on 2011-07-30 16:37  moss_tan_jun  阅读(5945)  评论(0编辑  收藏  举报
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();
}
}

}
}