如何根據新單元格值是>還是<來更改DataGridView單元格ForeColor比當前/舊單元格值更改?是否有一個事件在電流改變之前傳遞新值,所以我可以比較它們?在DataGridView單元格中比較舊值和新值
數據從底層源更新,並可能由BindingSource綁定。
如何根據新單元格值是>還是<來更改DataGridView單元格ForeColor比當前/舊單元格值更改?是否有一個事件在電流改變之前傳遞新值,所以我可以比較它們?在DataGridView單元格中比較舊值和新值
數據從底層源更新,並可能由BindingSource綁定。
我遇到了類似的問題。我解決了這個利用CellValidating
事件,而不是:
void dgv_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
{
var oldValue = dgv[e.ColumnIndex, e.RowIndex].Value;
var newValue = e.FormattedValue;
}
誠然,我只需要訪問舊價值,我並不需要進行任何格式。不過,我相信你可以通過這個事件處理程序來應用格式。
您可以將單元格的舊值存儲在變量中,根據結果比較和更改ForeColor,然後從變量中刪除舊值。
問候。
如果DataGridView控件的內部源是DataTable,那麼您可以使用DataRow的舊版DataRowVersion枚舉。請注意,我使用了CellFormatting事件。
例子:
private void DataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
// if NOT the DataGridView's new row
if (!this.dataGridView1.Rows[e.RowIndex].IsNewRow)
{
// if my desired column
if (e.ColumnIndex == 0)
{
TestDataSet.TestRow row;
row = (TestDataSet.TestRow)((DataRowView)this.dataGridView1.Rows[e.RowIndex].DataBoundItem).Row;
if (row.Column1, (int)row["Column1", DataRowVersion.Original]) > 0)
e.CellStyle.ForeColor = Color.Red;
}
}
}
你可能想看看DataGridView.CellValueChanged
事件(http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellvaluechanged.aspx )。
如果要在保存值之前檢查該值,請參閱DataGridView.CurrentCellDirtyStateChanged
(http://msdn.microsoft.com/zh-cn/library/system.windows.forms.datagridview.currentcelldirtystatechanged.aspx)。
而不是簡單地發佈鏈接,最好將解決方案的相關部分發布到您的答案中。 –
我希望避免這種情況,因爲我需要很多列,但如果這不是更簡單的方法... – bretddog