为DataGridView列标题增加复选框checkbox
详细代码如下: [mw_shl_code=csharp,true]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 DataGridViewCheckBox
{
public partial class Form1 : Form
{
// 创建一个DataGridView实例
private DataGridView dgv = new DataGridView();
// 创建一个CheckBox实例
private CheckBox userEnabled = new CheckBox();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// 绑定CheckBox发生勾选操作时的事件
userEnabled.CheckedChanged += userEnabled_CheckedChanged;
// 重绘dgv的CellPainting方法,在列标题出绘制复选框
dgv.CellPainting += dgv_CellPainting;
this.dgv.AllowUserToResizeRows = false;
this.dgv.AllowUserToResizeColumns = true;
this.dgv.Dock = DockStyle.Fill;
// 添加三列
this.dgv.Columns.Add("UserName", "UserName");
// 添加复选框列
this.dgv.Columns.Add(new DataGridViewCheckBoxColumn());
this.dgv.Columns[1].HeaderText = "Enabled";
this.dgv.Columns[1].HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight;
this.dgv.Columns.Add("Age", "Age");
// 插入演示数据
for (int i = 1; i <= 3; i++)
{
this.dgv.Rows.Add("Name" + i.ToString(), 0, i.ToString());
}
this.userEnabled.Visible = false;
this.userEnabled.Text = "";
// 向Form1窗体增加这两个实例
this.Controls.Add(dgv);
this.Controls.Add(userEnabled);
}
private void userEnabled_CheckedChanged(object send, System.EventArgs e)
{
for (int i = 0; i <= this.dgv.RowCount - 1; i++)
{
this.dgv.Rows.Cells[1].Value = this.userEnabled.Checked ? 1 : 0;
}
}
private void dgv_CellPainting(object sender, System.Windows.Forms.DataGridViewCellPaintingEventArgs e)
{
if (e.RowIndex == -1 && e.ColumnIndex == 1)
{
// 在指定列显示userEnabled实例
Point p = this.dgv.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true).Location;
p.Offset(this.dgv.Left +5, this.dgv.Top + 5);
this.userEnabled.Location = p;
this.userEnabled.Size = new Size(15, 15);
this.userEnabled.Visible = true;
this.userEnabled.BringToFront();
}
}
}
}[/mw_shl_code]
|