【发布时间】:2014-01-30 18:25:46
【问题描述】:
我真的很想更改单个 DataGridVeiwComboBox 控件的选定项的样式。
有一个数据库向我的 DataGridView 提供信息,如果由于某种原因数据无效,我想以某种方式通知用户。我决定将下拉文本字体设为红色,背景设为蓝色,以便在数百行列表中脱颖而出。
当有无效数据(意味着来自数据库的数据不是下拉列表中的选项之一)时,调用 DataError 回调:
private void OnDataError(object sender, DataGridViewDataErrorEventArgs e)
{
DataGridViewCellStyle style = new DataGridViewCellStyle();
style.ForeColor = Color.Red;
style.BackColor = Color.Blue;
((DataGridViewComboBoxCell)(((DataGridView)(sender))[e.ColumnIndex, e.RowIndex])).Style = style;
e.Cancel = true;
}
但是这会导致以下结果:
我不希望下拉菜单发生变化,我希望“0”即所选值发生变化。
还有其他方法可以通知用户该值无效吗?我不想创建一个列表并将其呈现给用户,行数可能会很大。
【问题讨论】:
-
在我看来,网格单元格的显示不是验证数据的合适位置。也许您应该首先质疑您显示“无效”数据的原因。
-
不幸的是,如果不对整个应用程序进行重大重组,没有其他位置可以解决此问题。这只是一个持续存在的问题的一部分,旧数据库正在与新前端一起使用,其中数据库中的旧值多年来一直是 OBE,并且从未改变。这个练习的重点是充实这些失败,同时仍然允许完成工作。
标签: c# winforms datagridview datagridviewcomboboxcell