我可以根据条件更改datagridview单元格字体样式吗?

时间:2015-07-30 05:16:21

标签: c# datagridview

我有一个有界的datagridview,一列从数据库中提取int。现在我很难告诉我的网格,当一个单元格超过' 1'作为一个价值,然后使它变得大胆。

这是我目前检查列的代码。这是一个表单加载事件。

DataGridViewCellStyle style = new DataGridViewCellStyle();
            style.Font = new Font(dgvItems.Font.FontFamily,12, FontStyle.Bold);
            foreach (DataGridViewRow row in dgvItems.Rows)
            {
                if (Convert.ToInt32(quantityDataGridViewTextBoxColumn.Text) > 1)
                {
                    foreach (DataGridViewCell cell in row.Cells)
                        cell.Style.ApplyStyle(style);
                }
            }

2 个答案:

答案 0 :(得分:0)

试试这个

DataGridViewCellStyle style = new DataGridViewCellStyle();
style.Font = new Font(dgvItems.Font.FontFamily, 12, FontStyle.Bold);

foreach (DataGridViewRow row in dgvItems.Rows)
{
   foreach (DataGridViewCell cell in row.Cells)
   {
      int result;
      bool isInt = Int32.TryParse(cell.Value.ToString(), out result);
      if (isInt && result > 1)
      {
        cell.Style = style;
      }
   }
}

- SJ

答案 1 :(得分:0)

不幸的是,没有自动表达式来对Winforms DataGridViews中的单元格进行样式设置,因此您必须在代码中执行此操作。

您应该将样式代码分解出来,并在每次加载或更改数据时调用它。

这是一个例子;您可能想要更改limit参数的数据类型并添加更多参数以允许更复杂的规则..:

void styleCells(DataGridView dgv, string columnName, int limit)
{
    DataGridViewCellStyle style = new DataGridViewCellStyle();
    style.Font = new Font(dgv.Font.FontFamily, 12, FontStyle.Bold);

    foreach (DataGridViewRow row in dgv.Rows)
    {

        if (Convert.ToInt32(row.Cells[columnName].Value) > limit)
            row.Cells[columnName].Style.ApplyStyle(style);
    }
}

如果列名确实是quantityDataGridViewTextBoxColumn,您可以这样称呼它:

styleCells(dgvItems, quantityDataGridViewTextBoxColumn, 1);