我想根据加载时的特定条件更改 DGV 行的背景颜色,即使在 Windows 窗体中也是如此。但我看不到任何 DGV 行的颜色有任何变化。谁能告诉我如何解决这个问题?
private void frmSecondaryPumps_Load(object sender, EventArgs e)
{
try
{
DataTable dt = DeviceData.BindData("SECONDARY_PUMPS".ToUpper());
dataGridView1.DataSource = dt;
foreach (DataGridViewRow row in dataGridView1.Rows)
{
foreach (DataGridViewColumn column in dataGridView1.Columns)
{
if (row.Cells[column.Name] != null)
{
if (row.Cells[column.Name].Value.ToString() == "ON")
row.DefaultCellStyle.BackColor = System.Drawing.Color.Green;
if (row.Cells[column.Name].Value.ToString() == "OFF")
row.DefaultCellStyle.BackColor = System.Drawing.Color.Red;
}
}
}
dataGridView1.Refresh();
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
使用任一方法的问题之一cellformatting
, databindingcomplete
甚至paint
事件是他们被多次解雇。根据我收集到的信息,存在一个问题datagridview
控制,因为在显示表单之前您无法更改任何单元格的颜色。因此,运行的方法或之前触发的事件Shown()
被称为不会改变颜色。被引用作为问题解决方案的事件通常有效,但由于它们被多次调用,因此可能不是最有效的答案。
解决该问题的最简单的方法可能是将代码放在网格中填充/着色Shown()
表单的方法而不是构造函数。下面是 msdn 论坛中一篇帖子的链接,该帖子向我提示了解决方案,它被标记为页面下方 3/4 左右的答案。
MSDN 论坛发布解决方案 http://social.msdn.microsoft.com/forums/en-US/winformsdatacontrols/thread/31ef832b-2fe2-4554-bf0c-8495f9e85ede/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)