C# 无法更改DataGridView的颜色或设置为只读
我有一个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++)
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运行时无法访问这些依赖关系。不过,我已经将调试输出添加到了循环中,它显示了单元格正在被循环。