[英]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.