C# 如何在刷新数据c后取消标记dataGridView上的标题复选框?
选择时的标题复选框选中复选框列中的所有复选框。选中“标题”复选框后,当数据刷新时,它仍显示为标记在其上。 当点击Ok按钮时,我有以下代码,它在datagridview的header复选框和每行的所有复选框中加载数据。现在,选中选中选中所有行中所有复选框的标题复选框。然后,再次单击Ok按钮,它将重新加载数据,但header复选框上的复选标记仍将显示,而不是未选中C# 如何在刷新数据c后取消标记dataGridView上的标题复选框?,c#,winforms,checkbox,datagridview,C#,Winforms,Checkbox,Datagridview,选择时的标题复选框选中复选框列中的所有复选框。选中“标题”复选框后,当数据刷新时,它仍显示为标记在其上。 当点击Ok按钮时,我有以下代码,它在datagridview的header复选框和每行的所有复选框中加载数据。现在,选中选中选中所有行中所有复选框的标题复选框。然后,再次单击Ok按钮,它将重新加载数据,但header复选框上的复选标记仍将显示,而不是未选中 private void buttonOk_Click(object sender, EventArgs e)
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();
}
它解决了我取消选中标题复选框的问题。为了使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;
}
如果没有任何代码来显示您迄今为止所做的尝试,就不可能帮助您。我们无法从头开始为您编写代码。请用代码说话。如果您对上述@Keyur Patel和@M Adeel Khalid of if any有任何提示,请立即添加代码。非常感谢。您能否先尝试一下简单的方法:添加一行ckBoxHeader.IsChecked=false;在ckBoxHeader.CheckedChanged+=ckBoxHeader\u CheckedChanged;之后;。您说在ok按钮中单击可以重新加载数据,但我看不到该方法的代码。无论如何,在按钮OK_中,单击可将复选框添加到网格中。如果单击该复选框,它将保持单击状态。您需要在重新加载数据并将其设置回false后获取该复选框。