DataGridViewCheckBoxCellsのバインドされていない列とともに、DataTableからデータをロードするDataGridViewがあります。DataGridViewの行は、ユーザーが保存した値を持つ別のDataTableと比較され、一致する場合は、その行のチェックボックスがオンになります。
値を比較し、チェックボックスの値を「true」に設定するコードは次のとおりです。
foreach (int j in selectedObjectives)
{
foreach (DataGridViewRow r in dgvObjectives.Rows)
{
if (j == Convert.ToInt32(r.Cells["ObjectiveID"].Value))
{
dgvObjectives.CurrentCell = r.Cells["Select"];
((DataGridViewCheckBoxCell)r.Cells["Select"]).Value = true;
//dgvObjectives.InvalidateCell(r.Cells["Select"]);
//dgvObjectives.EndEdit();
//dgvObjectives.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
if (Convert.ToInt32(r.Cells["ObjectiveID"].Value) == selectedIndex)
{
r.Selected = true;
}
}
}
フォームの読み込み中にこのアクションを実行するメソッドを呼び出すとprivate void WQMDrill_Load(object sender, EventArgs e)
、値は正しく設定されていますが、チェックボックスがオンになりません。ただし、フォームの読み込みが完了した後に呼び出されると、コードは完全に機能します。残念ながら、ロードプロセス中にこれらをチェックする必要があります。
私は自分の問題を明確にしたことを願っています。この問題についての助けをいただければ幸いです。ご覧のとおり、私はセルだけでなく、DataGridViewコントロール全体を無効にしようとしました。私も持っています
private void dgvObjectives_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (this.dgvObjectives.CurrentCell.ColumnIndex == 0)
{
this.dgvObjectives.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
この間、それは発火しません。ありがとうございました。