Привет, у меня есть представление данных, первый столбец которого (индекс = 0) является столбцом флажка.Я хочу обновить метку, когда ячейка отмечена и не отмечена.Кажется, моя функция работает нормально, но она не обновляет метку до тех пор, пока не будет изменена следующая ячейка в этом столбце.
когда форма загружает все строки, проверяются, скажем, 4 из 4. Я снимаю галочку с одной строкии ярлык не обновляется.Я снимаю флажок с другой строки, а затем появляется 3, так что вы видите, что он работает на шаг позади.
Я пробовал несколько разных DataGridViewCellEvents, таких как CellValueChanged, CellStateChanged, CellEndEdit, но все они ведут себя как говорят.мне все еще нужно иметь DataGridViewCellEventArgs e, чтобы я мог проверить столбец.
есть предложения?
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();
}
}