首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >作为参考传递DataGridViewRow

作为参考传递DataGridViewRow
EN

Stack Overflow用户
提问于 2014-01-21 05:39:40
回答 4查看 1.4K关注 0票数 3

我想把DataGridviewRow作为一个ref传递给它的单元格,但是我不能这样做。

代码语言:javascript
复制
foreach(DataGridViewRow dgr in dgvMarksEntryByClassWise.Rows)
{
   RowValueSet(ref dgr);
}  

这里给出了编译时错误,因为dgr是一个foreach iteration variable

我还试着用for loop来做

代码语言:javascript
复制
for (int i = 0; i < dgvMarksEntryByClassWise.Rows.Count; i++)
{
  RowValueSet(ref dgvMarksEntryByClassWise.Rows[i]);
}  

但是这里也给出了编译时错误:

A property,indexer or dynamic member acces cannot passed as an out reference

我参考了上面提出的问题,但没有找到适当的解决办法。

请建议我怎么做这件事

更新代码

代码语言:javascript
复制
void RowValueSet(ref DataGridViewRow dgr)
{
dgr.Cells["StudentZero"].Value = ss.Where(w => w.MarksheetMarks == "0").Count();
if (ss.Count() != 0)
dgr.Cells["StudentISEmpty"].Value = Convert.ToInt16(lblTotlatStudent1.Text) - ss.Count();
else
dgr.Cells["StudentISEmpty"].Value = 0;
dgr.Cells["StudentEntry"].Value = ss.Count();
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-02-12 14:06:14

您不能使用"foreach“甚至"for”分配迭代的枚举项。有一次,我用了一段代码:

代码语言:javascript
复制
List<DataGridViewRow> lstDgr = new List<DataGridViewRow>();
foreach(DataGridViewRow dgr in dgvMarksEntryByClassWise.Rows)
{
   DataGridViewRow dgrTemp = dgr;
   RowValueSet(ref dgrTemp);
   lstDgr.Add(dgrTemp);
}  
dgvMarksEntryByClassWise.Rows.Clear();
dgvMarksEntryByClassWise.Rows.AddRange(lstDgr); //Not sure about the AddRange, try the Add method instead

希望这能有所帮助

票数 2
EN

Stack Overflow用户

发布于 2014-02-17 18:03:47

正如上面的注释所述,您不需要通过引用传递DataGridViewRow。从参数中删除ref

代码语言:javascript
复制
void RowValueSet(DataGridViewRow dgr)
{
    dgr.Cells["StudentZero"].Value = ss.Where(w => w.MarksheetMarks == "0").Count();
    if (ss.Count() != 0)
        dgr.Cells["StudentISEmpty"].Value = Convert.ToInt16(lblTotlatStudent1.Text) - ss.Count();
    else
        dgr.Cells["StudentISEmpty"].Value = 0;
    dgr.Cells["StudentEntry"].Value = ss.Count();
}

如果网格中的值似乎没有更新,那是因为另一个原因。当需要刷新显示时,是否重新绑定网格?

票数 2
EN

Stack Overflow用户

发布于 2014-01-21 05:47:16

这个怎么样?

代码语言:javascript
复制
for (int i = 0; i < dgvMarksEntryByClassWise.Rows.Count; i++)
{
   var myRow = dgvMarksEntryByClassWise.Rows[i];
   RowValueSet(ref myRow);
} 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21250005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档