【问题标题】:VisualStudio 2010 C# - checkboxes in ListGridViewVisual Studio 2010 C# - List GridView 中的复选框
【发布时间】:2014-03-26 19:00:09
【问题描述】:

所以,我有一个带有几列的DataGridView。第一个 (index=0) 每行包含一个复选框。
应用程序运行时:我将某些行的复选框设置为 true,当我触发事件时,应用程序会忽略我单击的复选框最后的。但是,当我单击 CheckAll 按钮时,我使该操作适用于每个项目。

 private void  nameToolStripMenuItem_Click(object sender, EventArgs e)
{
    for (int i = 0; i < datagridview1.RowCount; i++)
    {
       try
       {
         if ((bool)datagridview1[0, i].Value){           
           // do something with row values
         }
       }
       catch (Exception ex) {
         // this is because if checkbox is not checked
         // the compiler throws NullReferenceException
       }
    }
}

更奇怪的是,我在项目的其他地方用相同的 for(){} 编写了代码,并且该代码没有这样的异常情况。我做错了什么?
感谢您阅读本文。

【问题讨论】:

  • 如果您选择 1,2 和 3,您的意思是 10 条记录,它只返回您选择的 1 和 2 记录?是这样吗??
  • 是的,就是这样。

标签: c# visual-studio-2010 checkbox datagridview


【解决方案1】:

我可能会改为使用 foreach 创建循环,这将确保检查每一行。如果您需要将其保留为 for 循环,您可以使用 i

【讨论】:

  • 好的,谢谢你的提示,我会尽力让你知道这是否有帮助:)
  • 抱歉,回答缓慢的家伙,我一直无法连接到互联网。foreach 无法工作,因为:错误 1 foreach 语句无法对以下变量进行操作键入“System.Windows.Forms.DataGridView”,因为“System.Windows.Forms.DataGridView”不包含“GetEnumerator”的公共定义我使用.NET 3.5 btw,也许这些信息会帮助某人弄清楚发生了什么。
  • 对不起,我没有仔细阅读这篇文章以注意到 WinForms 与 WebForms...你试过我
  • 试过
【解决方案2】:

最后。 Visual Studio 未计算检查的最后一行,因为该单元格的编辑尚未完成。 我用这行代码解决了问题。

datagridview1.EndEdit();

【讨论】:

    猜你喜欢
    • 2018-07-23
    • 2018-05-15
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多