DataGridViewにはDataTableのデータとDataGridViewCheckBoxCellsのバインドされていない列が読み込まれています。 DataGridViewの行は、ユーザーが保存した値を持つ別のDataTableと比較され、一致する場合はその行のチェックボックスがチェックされます。私は、フォームのロードprivate void WQMDrill_Load(object sender, EventArgs e)
中にこのアクションを実行するメソッドを呼び出すとDataGridViewCheckBoxCellフォームのロード中にチェックを設定すると、表示時の表示方法
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;
}
}
}
、値が正しく設定されている、:ここで
は、値を比較し、「真」の横にあるチェックボックスの値を設定するコードですチェックボックスはチェックされません。しかし、フォームのロードが完了した後に呼び出されると、コードは完全に機能します。残念なことに私の場合、ロード処理中にこれらをチェックする必要があります。
私は私の問題ではっきりしていたことを願っています。この問題についての助けに感謝します。ご覧のとおり、DataGridViewコントロール全体だけでなく、セルだけを無効にしようとしました。私も持っています
private void dgvObjectives_CurrentCellDirtyStateChanged(object sender, EventArgs e)
{
if (this.dgvObjectives.CurrentCell.ColumnIndex == 0)
{
this.dgvObjectives.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
}
この時間中は起動しません。ありがとうございました。
最初のスニペットは、フォームの 'Load'イベントで呼び出されたコードとまったく同じですか?ロード中に値が正しく設定されていることを確認するためにそれを踏んだことがありますか? –
フォームの 'Load'イベントは、このコードが存在するメソッドを呼び出します。私はコードをステップ実行し、チェックボックスの値は正しく設定されていますが、チェックボックスはチェックされているようには表示されません。ただし、このメソッドは、ユーザーがボックスを手動でチェックし、そこに完全に機能する場合にも呼び出されます。 – Megan