刷新数据c#后如何取消标记dataGridView上的标题复选框?

时间:2017-08-28 03:15:33

标签: c# winforms checkbox datagridview uncheck

选择

标题复选框选中复选框列中的所有复选框。选择标题复选框后,当数据刷新时,它仍然显示为标记在其上。 单击“确定”按钮时,我有以下代码,它会在带有标题复选框的datagridview中加载数据,并在每行中显示所有复选框。现在,选择标题复选框,选中所有行中的所有复选框。然后,再次单击“确定”按钮,它会重新加载数据,但标题复选框上的复选标记仍然显示而不是未选中。

        private void buttonOk_Click(object sender, EventArgs e)
    {
        LoadDataGridView();

        CheckBox ckBoxHeader = new CheckBox();

        //Get the column header cell bounds
        Rectangle rect = datagridview1.GetCellDisplayRectangle(0, -1, true);
        rect.Y = 3;

        //align header check box in the middle center at rect.X = 82
        rect.X = (rect.Location.X + (rect.Width / 2)) - 10 ;

        ckBoxHeader.Size = new Size(18, 18);
        //Change the location of the CheckBox to make it stay on the header
        ckBoxHeader.Location = rect.Location;
        datagridview1.Columns[0].Frozen = true;

        ckBoxHeader.CheckedChanged += ckBoxHeader_CheckedChanged;

        //Add the CheckBox into the DataGridView
        datagridview1.Controls.Add(ckBoxHeader);
    }


   private void ckBoxHeader_CheckedChanged(object sender, EventArgs e)
    {
        for (int j = 0; j <= datagridview1.RowCount - 1; j++)
        {
            datagridview1[0, j].Value = ((CheckBox)sender).Checked;
        }
        datagridview1.EndEdit();

    }

1 个答案:

答案 0 :(得分:0)

它解决了我取消选中标题复选框的问题。上面的代码应该重写如下,以便headerCheckBox.Checked = false;工作: 加载事件代码 -

    private void Form1_Load(object sender, EventArgs e)
    {
        addHeaderCheckBox();
        changeDataGridViewColumnReadonly();
        datagridview1.Columns[0].Frozen = true;            
    }

加载datagridview方法代码 -

        private void LoadDataGridView()
    {
        DataTable dt = new DataTable();
        string WhereClause = " WHERE NO LIKE '" + textBoxNumber.Text.ToString().Substring(0,12) + "%' AND (DATE_TIME_START BETWEEN " + General.BuildOraDateString(dateTimePickerStart.Value) + " AND " + General.BuildOraDateString(dateTimePickerEnd.Value) + ") AND STATUS_IND = 'ST' ";

        dt = Unit.GetData(WhereClause);
        this.datagridview1.Refresh();
        this.datagridview1.DataSource = dt;

        headerCheckBox.Checked = false;

        headerCheckBox.MouseClick += new 
        MouseEventHandler(headerCheckBox_MouseClick);

        datagridview1.CellValueChanged +=
      new DataGridViewCellEventHandler(datagridview1_CellValueChanged);

        datagridview1.CurrentCellDirtyStateChanged +=
          new EventHandler(datagridview1_CurrentCellDirtyStateChanged);

        datagridview1.CellPainting +=
          new 
      DataGridViewCellPaintingEventHandler(datagridview1_CellPainting);
    }

确定按钮点击事件 -

     private void buttonOk_Click(object sender, EventArgs e)
    {
        LoadDataGridView();
        totalCheckBoxes = dgvBaleDisposition.RowCount;

    }