C# 基于可编辑属性设置DataGridview列的背景色
我通过直接分配数据表从数据库填充Datagridview。Datagridview中有些列是可编辑的,有些是不可编辑的。我想将可编辑列的颜色设置为“黄色” 我知道我可以将列的颜色设置为C# 基于可编辑属性设置DataGridview列的背景色,c#,.net,datagridview,C#,.net,Datagridview,我通过直接分配数据表从数据库填充Datagridview。Datagridview中有些列是可编辑的,有些是不可编辑的。我想将可编辑列的颜色设置为“黄色” 我知道我可以将列的颜色设置为 myGrid.Columns["myColumn"].DefaultCellStyle.BackColor = Color.Red; 但是如何检查可编辑属性并在此基础上设置颜色 更新: 这就是我要找的。。。黄色单元格应该是可编辑的。基本上是指批发商价格、零售价格下的单元格。。etc应该是可编辑的 使用 如前所述
myGrid.Columns["myColumn"].DefaultCellStyle.BackColor = Color.Red;
但是如何检查可编辑属性并在此基础上设置颜色
更新:
这就是我要找的。。。黄色单元格应该是可编辑的。基本上是指批发商价格、零售价格下的单元格。。etc应该是可编辑的
使用
如前所述,您还可以重写paint方法。这只是一个使列可编辑的示例代码,dgvSample是您在表单中添加的DataGridView。在这里,我已使所有奇数列都可编辑。所以,以同样的方式,您可以有一个带有复选框的隐藏列,并检查其是否可编辑,以实现相同的效果
dgvSample.AllowUserToAddRows = false;
dgvSample.AllowUserToDeleteRows = false;
for (int i = 0; i <= 10; i++)
{
string[] values = new string[] { "1", "Name" };
dgvSample.Rows.Add(values);
if (i % 2 == 0)
{
DataGridViewRow r = dgvSample.Rows[dgvSample.Rows.Count - 1];
r.ReadOnly = true;
}
else
{
r.DefaultCellStyle.BackColor = Color.Yellow;
}
}
dgvSample.allowUserToAddress=false;
dgvSample.AllowUserToDeleteRows=false;
对于(int i=0;i我可以理解您的问题,您想更改datagridview
的可编辑单元格的颜色吗
您可以通过使用datagridview
的DataGridViewCellFormattingEvent
事件来实现这一点,并检查列是否为readonly
,然后更改datagridviewcell
的背景
private void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (!dgv.Columns[e.ColumnIndex].ReadOnly)
{
e.CellStyle.BackColor = Color.Yellow;
}
}
输出:
谢谢..但是继续获取此错误对象'不包含'Cells'的定义,并且找不到接受'object'类型的第一个参数的扩展方法'Cells'(是否缺少using指令或程序集引用?)
for rows.CellsOne sec,查看一下。立即尝试。更新了我的答案谢谢…但我不能通过给出像这样的列名来进行迭代。Cells[“myColumn”].Value..是否有一种方法可以在for each循环中进行迭代。如果您只查找一列,请直接使用row.Cells[1]访问它
我试过了..但是黄色显示的是不可编辑的单元格,并且是随机的..我在if语句中的dgv
之前添加了!
,这就是我使用的私有void dgvGetData_CellFormatting(对象发送方,DataGridViewCellFormattingEventArgs){if(!dgvGetData.Columns[e.ColumnIndex].ReadOnly){e.CellStyle.BackColor=Color.Yellow;}
在datagridview列设置中,如果(!dgv.Columns[e.ColumnIndex].ReadOnly)使用此if语句,它应该可以正常工作。
private void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (!dgv.Columns[e.ColumnIndex].ReadOnly)
{
e.CellStyle.BackColor = Color.Yellow;
}
}