【发布时间】:2014-10-02 00:17:00
【问题描述】:
我想在我的 DataGridView 控件中设置几个单元格的背景色。 Backcolor 在用 RowsAdded 事件处理程序中的行填充控件时动态设置。这是代码
private void dataGridView_RowsAdded( object sender, DataGridViewRowsAddedEventArgs e )
{
if( dataGridView.Rows[e.RowIndex].Cells[2].Value as string == "Color" )
{
dataGridView.Rows[e.RowIndex].Cells[3].ReadOnly = true;
SetCellColor( dataGridView.Rows[e.RowIndex].Cells[3], dataGridView.Rows[e.RowIndex].Cells[3].Value.ToString() );
}
}
private void SetCellColor( DataGridViewCell cell, Color clr )
{
cell.Style.BackColor = clr;
cell.Style.SelectionBackColor = clr;
}
private void SetCellColor( DataGridViewCell cell, string HEXColorVal )
{
Int32 clrVal;
System.Globalization.CultureInfo provider = new System.Globalization.CultureInfo( "en-US" );
if( Int32.TryParse( HEXColorVal, System.Globalization.NumberStyles.HexNumber, provider, out clrVal ) )
{
Color clr = Color.FromArgb( clrVal );
SetCellColor( cell, clr );
}
}
在最后一列中存储了透明度 = 0 的颜色的 srting 表示。在运行时我可以看到,背景属性设置为正确的值,但实际上背景仍然是白色的,当我制作这个单元格时活跃的一切也都变白了。这种行为的原因是什么?我尝试通过在 cellFormating 事件处理程序中设置此属性来修复它,但结果相似。同时,当我使用 ColorDialog 中的颜色设置此属性时(此处显示为双击),一切正常。
【问题讨论】:
标签: c# winforms datagridview