EB.*_*EB. 135 c# datagridview background-color winforms
我想在datagridview中更改特定行的颜色.当columncell 7的值小于columncell 10中的值时,该行应更改为红色.有关如何完成此操作的任何建议吗?
Ric*_*hez 183
您需要遍历datagridview中的行,然后比较每行上的第7列和第10列的值.
试试这个:
foreach (DataGridViewRow row in vendorsDataGridView.Rows)
if (Convert.ToInt32(row.Cells[7].Value) < Convert.ToInt32(row.Cells[10].Value))
{
row.DefaultCellStyle.BackColor = Color.Red;
}
Run Code Online (Sandbox Code Playgroud)
Ede*_*den 59
我只是在调查这个问题(所以我知道这个问题大约在3年前发布,但也许它会帮助某些人......)但似乎更好的选择是将代码放在RowPrePaint
事件中,这样你就不会必须遍历每一行,只有那些被绘制的行(所以它会在大量数据上表现得更好:
附加到活动
this.dataGridView1.RowPrePaint
+= new System.Windows.Forms.DataGridViewRowPrePaintEventHandler(
this.dataGridView1_RowPrePaint);
Run Code Online (Sandbox Code Playgroud)
事件代码
private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
if (Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[7].Text) < Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[10].Text))
{
dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Beige;
}
}
Run Code Online (Sandbox Code Playgroud)
SLa*_*aks 23
你正在寻找这个CellFormatting
活动.
这是一个例子.
小智 21
我也无法更改文本颜色 - 我从未看到颜色变化.
直到我添加的代码的文本颜色更改为活动DataBindingsComplete
的DataGridView
.之后它起作用了.
我希望这能帮助那些面临同样问题的人.
Dem*_*emi 13
类似于以下内容...假设单元格中的值为整数.
foreach (DataGridViewRow dgvr in myDGV.Rows)
{
if (dgvr.Cells[7].Value < dgvr.Cells[10].Value)
{
dgvr.DefaultCellStyle.ForeColor = Color.Red;
}
}
Run Code Online (Sandbox Code Playgroud)
未经测试,对任何错误表示歉意.
如果您知道特定行,则可以跳过迭代:
if (myDGV.Rows[theRowIndex].Cells[7].Value < myDGV.Rows[theRowIndex].Cells[10].Value)
{
dgvr.DefaultCellStyle.ForeColor = Color.Red;
}
Run Code Online (Sandbox Code Playgroud)
有些人喜欢用Paint
,CellPainting
或CellFormatting
事件,但请注意,在这些事件中更改样式引起递归调用.如果使用DataBindingComplete
它将只执行一次.其论点CellFormatting
是它仅在可见单元格上调用,因此您不必格式化不可见单元格,而是将它们格式化多次.
你可以改变Backcolor
使用condition.and调用这个函数应用后逐行Datasource
的DatagridView
。
这是该功能。只需复制并放在后面Databind
private void ChangeRowColor()
{
for (int i = 0; i < gvItem.Rows.Count; i++)
{
if (BindList[i].MainID == 0 && !BindList[i].SchemeID.HasValue)
gvItem.Rows[i].DefaultCellStyle.BackColor = ColorTranslator.FromHtml("#C9CADD");
else if (BindList[i].MainID > 0 && !BindList[i].SchemeID.HasValue)
gvItem.Rows[i].DefaultCellStyle.BackColor = ColorTranslator.FromHtml("#DDC9C9");
else if (BindList[i].MainID > 0)
gvItem.Rows[i].DefaultCellStyle.BackColor = ColorTranslator.FromHtml("#D5E8D7");
else
gvItem.Rows[i].DefaultCellStyle.BackColor = Color.White;
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
386633 次 |
最近记录: |