はこんにちはは、その最初の列(インデックス= 0)のチェックボックス列でのDataGridViewを有します。私は、セルがチェックされ、チェックが外されたときにラベルを更新したい。私の関数はうまくいくようですが、その列の次のセルが変更されるまでラベルを更新しません。フォームの負荷がすべての行がチェックされたときに 捕捉セル列のクリックと実行イベント
ので、私は1行をオフにして、ラベルが更新されない4の4を言います。私は別の行のチェックを外し、それから3と言うので、それは一歩一歩前進しているのを見ます。私はCellValueChanged、CellStateChanged、CellEndEditのようないくつかの異なるDataGridViewCellEventsを試してみたが、彼らはすべての発言のように行動。私はまだ列をチェックすることができますので、DataGridViewCellEventArgsを持っている必要があります。
提案がありますか?
private void fileGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0)
{
int numberOfFiles = 0;
for (int i = 0; i < fileGrid.Rows.Count; i++)
{
Console.WriteLine(fileGrid[0, i].Value.ToString());
if (fileGrid[0, i].Value.ToString() == "True")
{
numberOfFiles++;
}
}
numberOfFilesLabel.Text = numberOfFiles.ToString();
}
}
私はまだ自分の質問に答えることはできませんが、これは私が達成するために使用するものである:
private void fileGrid_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == 0)
{
int numberOfFiles = 0;
for (int i = 0; i < fileGrid.Rows.Count; i++)
{
Console.WriteLine(fileGrid[0, i].Value.ToString());
if (fileGrid[0, i].Value.ToString() == "True")
{
numberOfFiles++;
}
}
if (fileGrid.IsCurrentCellDirty)
fileGrid.CommitEdit(DataGridViewDataErrorContexts.Commit);
if (fileGrid.CurrentCell.Value.ToString().Equals("True"))
{
numberOfFiles++;
}
if (fileGrid.CurrentCell.Value.ToString().Equals("False"))
{
numberOfFiles--;
}
numberOfFilesLabel.Text = numberOfFiles.ToString();
}
}
ええと、同じ結果、申し訳ありません。 – ikathegreat
ok、thats weird。私はちょうどデモslnを作成し、スニペットが動作します。 MessageBoxが表示されます...あなたのプロジェクトでは何が正しく動作しませんか? – stylefish
はいメッセージボックスが表示されますが、私はチェックボックスが/未チェックチェックされているint型を増減する必要がある - 基本的には確認されている行数を示します。私が前に設定すると、少しは違っ – ikathegreat