我有以下问题
在我的应用程序中,我做了一些计算,然后将它们放入DataTable对象(6列,最新的数据是最重要的)。要查看结果,我将它们放入DataGridView对象,这是我的问题。根据最后一列中包含的数据,我想在适当的颜色上标记单元格。我不知道我是否应该在DataGridView对象上执行此操作,因为这是用户界面?我能在哪里做到这一点? DataTable对象没有样式属性?
非常感谢...
答案 0 :(得分:0)
您可以使用DataGridView的CellPainting事件根据其内容格式化单元格。
e.g。 `
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.ColumnIndex >= 0 && e.RowIndex >= 0)
{
switch (dataGridView1.Columns[e.ColumnIndex].DataPropertyName)
{
case "Description":
{
break;
}
case "NormalRoom":
{
break;
}
case "Colour1":
case "Colour2":
{
Color co = Color.White;
if (e.Value != null && e.Value != DBNull.Value)
{
co = string2Color((string)e.Value);
}
e.CellStyle.BackColor = Color.White;
e.CellStyle.ForeColor = Color.Black;
etc.`
答案 1 :(得分:0)
我做过这样的事情:
public void setABCColor(DataGridView DGV)
{
for (int i = 0; i < DGV.Rows.Count; i++)
{
if ((string)DGV.Rows[i].Cells[6].Value == "A")
{
DGV.Rows[i].Cells[6].Style.BackColor = Color.Green;
}
else if ((string)DGV.Rows[i].Cells[6].Value == "B")
{
DGV.Rows[i].Cells[6].Style.BackColor = Color.Blue;
}
else
{
DGV.Rows[i].Cells[6].Style.BackColor = Color.Red;
}
}
}
这可以接受吗?这不是改变了MVC设计模式的假设吗?
答案 2 :(得分:0)
我建议将逻辑放在datagridview的Cell Formatting事件中。 如果数据根据网格中的某些计算动态变化,这些也会反映出更改
之类的东西void myDataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.Value.ToString() == "A" )
e.CellStyle.BackColor = Color.Red;
}