0
您好我有一個datagridview其第一列(索引= 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();
}
}
呃剛剛測試過這個,同樣的結果,對不起。 – ikathegreat 2012-01-29 01:41:04
好的,那很奇怪。我只是創建了一個演示sln和片段的作品。顯示MessageBox ...什麼東西在您的項目中不起作用? – stylefish 2012-01-29 01:51:51
是的消息框會顯示,但我需要增加或減少一個int當複選框被選中/取消選中 - 基本上只是顯示檢查了多少行。讓我嘗試重寫我的代碼以使用你的方法,因爲我之前設置的工作方式有點不同 – ikathegreat 2012-01-29 01:54:35