C# 无法更改DataGridView的颜色或设置为只读

C# 无法更改DataGridView的颜色或设置为只读,c#,datagridview,m,C#,Datagridview,M,我有一个datagridview,需要禁用未选中该行复选框值的行,代码如下: foreach (DataGridViewRow row in catView.Rows) { if (row.Cells[1].FormattedValue.ToString() != "true") { for (int i = 0; i < row.Cells.Count; i++)

我有一个datagridview,需要禁用未选中该行复选框值的行,代码如下:

        foreach (DataGridViewRow row in catView.Rows)
        {
            if (row.Cells[1].FormattedValue.ToString() != "true")
            {
                for (int i = 0; i < row.Cells.Count; i++)
                {
                    row.Cells[i].Style.ForeColor = Color.Gray;
                    row.Cells[i].ReadOnly = true;
                }
            }
        }
foreach(catView.Rows中的DataGridViewRow行)
{
if(row.Cells[1].FormattedValue.ToString()!=“true”)
{
对于(int i=0;i
问题是,这并没有设置颜色或禁用复选框,我错了什么

谢谢

更多信息:


单元格[1]是复选框列。

尝试用以下内容替换
表达式的

for (int i = 0; i < row.Cells.Count; i++)
for(int i=0;i
必须对新的DataGridViewRow进行尺寸标注并进行设置。 在VB.NET中,我将执行以下操作:

 dim MyLine as new DataGridViewRow
 with MyLine
      .Cells[i].DefaultCellStyle.ForeColor = Color.Gray;
      .Cells[i].ReadOnly = true;
 end with

试试看。

如果数据网格的源是数据网格,我找不到直接更新数据网格的方法,在手动创建列并手动将行添加到数据网格后,代码工作正常


我设想,那些使用datatable填充datagrid的人将需要使用格式更改事件处理程序来更新单元格,该处理程序在绘制datagrid时提交更改。

for(int I=1;I==row.cells.Count;I++)
这到底是什么-body很可能永远不会对行中的所有单元格执行操作,并设置它们的前景色和只读值,至少这是它应该做的。谢谢,编辑了循环,但问题仍然存在,即使循环引用每个单元格,这些单元格也没有ForeColor和ReadOnly设置的值。代码工作正常,但您的条件没有
Convert.ToBoolean(row.Cells[1].Value)
似乎总是正确的。。?也许
Convert.ToBoolean(row.Cells[1].FormattedValue)
效果更好?!Convert.ToBoolean(row.Cells[1].Value)在这里工作得很好。但是,是的,这可能永远是真的,我会尝试你的建议,但主要问题仍然存在。谢谢,这是一个令人尴尬的错误,但问题仍然存在于已更正的循环中,每个单元格的值未设置,我真的不知道为什么。您是否在循环中设置了断点以查看设置颜色和只读的行是否被命中?这里没有调试的机会,因为应用程序存在复杂的依赖关系,直接从Visual Studio运行时无法访问这些依赖关系。不过,我已经将调试输出添加到了循环中,它显示了单元格正在被循环。