すべて、私がやりたいことは単純です(またはそう思った)。現在、DataGridView
ユーザーが処理する必要があるかどうかを示すチェックボックス付きのチェックボックスがあります。一部のプロセスは他のプロセスに依存しているため、依存するプロセスを使用してチェックするように強制します
private void dataGridViewProcess_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == (int)ProcessColumns.Error)
{
if (!String.IsNullOrEmpty(dataGridViewProcess.Rows[e.RowIndex]
.Cells[e.ColumnIndex].Value.ToString()))
{
Utils.ErrMsg(String.Format("{0}",
(String.IsNullOrEmpty(siteReportArr[currentSite, e.RowIndex]) ?
"Error message currently unavalible. Try again later." :
siteReportArr[currentSite, e.RowIndex])));
}
}
dataGridViewProcess.CommitEdit(DataGridViewDataErrorContexts.Commit);
}
private void dataGridViewProcess_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
if (!bInLoadEvent && e.RowIndex >= 0)
{
if (e.RowIndex == (int)CurrentProcess.N)
{
DataGridViewRow rowA = dataGridViewProcess.Rows[e.RowIndex];
DataGridViewRow rowB = dataGridViewProcess.Rows[e.RowIndex + 1];
if (Convert.ToBoolean(rowA.Cells[(int)ProcessColumns.Process].Value)
== false)
{
rowB.Cells[(int)ProcessColumns.Process].Value = false;
}
}
...
else if (e.RowIndex == (int)CurrentProcess.C)
{
DataGridViewRow rowB = dataGridViewProcess.Rows[e.RowIndex];
DataGridViewRow rowA = dataGridViewProcess.Rows[e.RowIndex - 1];
if (Convert.ToBoolean(rowA.Cells[(int)ProcessColumns.Process].Value)
== true)
{
rowB.Cells[(int)ProcessColumns.Process].Value = true;
}
}
}
}
これらのプログラムによる変更はすべて、イベントで最後に表示される1つ目のバーでうまく機能しますdataGridViewProcess_CellValueChanged
。ここで、前のプロセスC
がチェックされていて、ユーザーがチェックを外そうとした場合C
、強制的にチェックされたままにしておきたいと思います。私は現在、これを行うことができません。
私はイベントを使用してみましたが、DataGridView
Validated
イベントを使用CellDirtyStateChanged
しても無駄になりました。この(一見非常に基本的な)問題についての助けをいただければ幸いです。
御時間ありがとうございます。