0

C# .net Windows アプリケーションに datagridview があり、そこに 1 つのチェックボックス列があり、ヘッダー チェックボックスを追加しました。

ヘッダーチェックボックスとチェックボックス列を追加するコードは

DataGridViewCheckBoxColumn c1;
CheckBox ckBox;

private void CheckboxSelect_Load(object sender, EventArgs e)
{
c1 = new DataGridViewCheckBoxColumn();
c1.Name = "selection";
c1.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter;

this.dgvSelectAll.Columns.Add(c1);
this.dgvSelectAll.Rows.Add();
this.dgvSelectAll.Rows.Add();
this.dgvSelectAll.Rows.Add();
this.dgvSelectAll.Rows.Add();

ckBox = new CheckBox();
Rectangle rect =this.dgvSelectAll.GetCellDisplayRectangle(0, -1, true);
ckBox.Size = new Size(18, 18);
ckBox.Location = rect.Location;
this.dgvSelectAll.Controls.Add(ckBox);
}

すべてのチェックボックスがチェックされている場合、ヘッダーチェックボックスがチェックされ、チェックされたチェックボックスの1つがチェックされていない場合、ヘッダーはC#.Net Windowsアプリケーションでチェックされませんか??

4

1 に答える 1

0

これを試して、

 void dgvSelectAl_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        if (e.ColumnIndex == 0)
        {
            DataGridViewCheckBoxCell cellCheck = (DataGridViewCheckBoxCell)dgvSelectAl[e.ColumnIndex, e.RowIndex];
            if (cellCheck != null)
            {
                if ((bool)cellCheck.Value == true)
                {
                    checkBoxCounter++;
                }
                else
                {
                    checkBoxCounter--;
                }
            }
            if (checkBoxCounter == dgvSelectAl.Rows.Count-1)
            {
                ckBox.Checked = true;
            }
            else if (checkBoxCounter != dgvSelectAl.Rows.Count-1)
            {
                ckBox.Checked = false;
            }
        }
    }
于 2012-09-28T07:15:27.440 に答える