DatagridVIew 单单元格格式化
DatagridVIew single cell formatting
试图找到关于这个问题的答案,但没有找到对我有用的东西。
我需要根据不同的 conditions.Fof 示例更改我的 dataGridView 中单个单元格的字体颜色(背景颜色等)- 此 dataGridView 中同一行的另一个单元格中的值。
我之前找到的所有解决方案都不能为我解决这个问题。
下面是我解决这个问题的建议。
这是我的解决方案:
您需要创建事件 datagridView_cell_Formating:
并添加类似这样的代码:
private void datagridView_cell_Formating(object sender, DataGridViewCellFormattingEventArgs e)
{
if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Target_column")
{
if ((e.Value != null) && (dataGridView1.Rows[e.RowIndex].Cells["Condition_cell"].Value.ToString() == "value"))
{
e.CellStyle.ForeColor = Color.Yellow;
}
else if ((e.Value != null))
{
e.CellStyle.ForeColor = Color.Red;
}
}
}
希望这会对某人有所帮助。
每个 DataGridView 都有一个 DefaultCellStyle
。 DataGridView 的每个 DataGridViewColumn
可能有一个 DefaultCellStyle
。如果这是 NULL,则使用 DataGridView 的 DefaultCellStyle
。要查看列使用的实际单元格样式,请使用 InheritedCellStyle
同样,每个 DataGridViewCell 都有一个 Style
。如果为空,则使用单元格列的 InheritedCellStyle
,因此如果此列为空 DefaultCellStyle,
,则使用 DataGridView
的 DefaultCellStyle
。 DataGridViewCell实际使用的Style在属性InheritedCellStyle
.
- 单元格具有 non-null 样式:InheritedStyle 等于此
- 单元格有空样式,列有non-null默认样式:Cell.InheritedStyle等于列默认样式
- 单元格具有空样式,列具有空默认样式:Cell.InheritedStyle 等于 DataGridview 样式
如果只想改变某个单元格X的单元格样式,只需设置DefaultCellStyle即可。您可以克隆 InheritedStyle 并更改属性。
void SetCellBackColor(DataGridViewCell cell, Color color)
{
cell.Style = (DataGridViewCellStyle)(cell.InheritedStyle.Clone());
// or slightly more efficient:
if (cell.Style == null)
cell.Style = (DataGridViewCellStyle)(cell.InheritedStyle.Clone());
cell.Style.BackColor = color;
}
void SetCellBackColorToDefault(DataGridViewCell cell)
{
// set Style to null; the Column's InheritedStyle will be used
cell.Style = null;
}
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView dr = (DataRowView)e.Row.DataItem;
string temp = dr[3].ToString().Trim();
int sub = int.Parse(temp);
foreach (TableCell cell in e.Row.Cells)
{
if (sub > 0)
{
e.Row.Cells[3].BackColor = Color.Coral;
}
if (sub > 25)
{
e.Row.Cells[5].BackColor = Color.Coral;
}
}
}
}
如果这没有帮助,请详细说明要求。
试图找到关于这个问题的答案,但没有找到对我有用的东西。 我需要根据不同的 conditions.Fof 示例更改我的 dataGridView 中单个单元格的字体颜色(背景颜色等)- 此 dataGridView 中同一行的另一个单元格中的值。 我之前找到的所有解决方案都不能为我解决这个问题。
下面是我解决这个问题的建议。
这是我的解决方案: 您需要创建事件 datagridView_cell_Formating:
并添加类似这样的代码:
private void datagridView_cell_Formating(object sender, DataGridViewCellFormattingEventArgs e)
{
if (this.dataGridView1.Columns[e.ColumnIndex].Name == "Target_column")
{
if ((e.Value != null) && (dataGridView1.Rows[e.RowIndex].Cells["Condition_cell"].Value.ToString() == "value"))
{
e.CellStyle.ForeColor = Color.Yellow;
}
else if ((e.Value != null))
{
e.CellStyle.ForeColor = Color.Red;
}
}
}
希望这会对某人有所帮助。
每个 DataGridView 都有一个 DefaultCellStyle
。 DataGridView 的每个 DataGridViewColumn
可能有一个 DefaultCellStyle
。如果这是 NULL,则使用 DataGridView 的 DefaultCellStyle
。要查看列使用的实际单元格样式,请使用 InheritedCellStyle
同样,每个 DataGridViewCell 都有一个 Style
。如果为空,则使用单元格列的 InheritedCellStyle
,因此如果此列为空 DefaultCellStyle,
,则使用 DataGridView
的 DefaultCellStyle
。 DataGridViewCell实际使用的Style在属性InheritedCellStyle
.
- 单元格具有 non-null 样式:InheritedStyle 等于此
- 单元格有空样式,列有non-null默认样式:Cell.InheritedStyle等于列默认样式
- 单元格具有空样式,列具有空默认样式:Cell.InheritedStyle 等于 DataGridview 样式
如果只想改变某个单元格X的单元格样式,只需设置DefaultCellStyle即可。您可以克隆 InheritedStyle 并更改属性。
void SetCellBackColor(DataGridViewCell cell, Color color)
{
cell.Style = (DataGridViewCellStyle)(cell.InheritedStyle.Clone());
// or slightly more efficient:
if (cell.Style == null)
cell.Style = (DataGridViewCellStyle)(cell.InheritedStyle.Clone());
cell.Style.BackColor = color;
}
void SetCellBackColorToDefault(DataGridViewCell cell)
{
// set Style to null; the Column's InheritedStyle will be used
cell.Style = null;
}
protected void OnRowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DataRowView dr = (DataRowView)e.Row.DataItem;
string temp = dr[3].ToString().Trim();
int sub = int.Parse(temp);
foreach (TableCell cell in e.Row.Cells)
{
if (sub > 0)
{
e.Row.Cells[3].BackColor = Color.Coral;
}
if (sub > 25)
{
e.Row.Cells[5].BackColor = Color.Coral;
}
}
}
}
如果这没有帮助,请详细说明要求。