繁体   English   中英

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

[英]Can I change my datagridview cell font style based on a condition?

我有一个有界的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);
                }
            }

尝试这个

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

不幸的是,在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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM