我真的想要更改单个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'更改。
是否有其他方式通知用户该值无效?我不想创建一个列表并将其呈现给用户,行数可能非常大。
答案 0 :(得分:0)
AFAIK,没有直接的方法来实现你的目标。
创建自定义“Column”,“Cell”和“EditingControl”类。创建自定义DataGridViewComboBoxEditingControl
并覆盖OnDrawItem
方法以使用自定义颜色绘制项目。
使用自定义ComboBoxColumn
类创建所需的组合框列,将其添加到网格并绑定数据。如果设置列的DataPropertyName
属性,那么当数据绑定时,数据列将绑定到网格列。 DataGridView将自动生成其他列。