日期:2014-05-18  浏览次数:20947 次

急!winform datagridview表头怎么增加复选框,点击表头的复选框,下面行的复选全选或全未选
如题,谢谢!

------解决方案--------------------
LZ着急用,那就贴C#代码如下:
C# code
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
{
    public partial class Form1 : Form
    {
        private DataGridView DataGridView1 = new DataGridView();
        private CheckBox CheckBox1 = new CheckBox(); 

        public Form1()
        {
            InitializeComponent();
        }

        private void 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); 
        }

        private void 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);
            }
        }

        private void 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();
            }
        } 

    }
}