【问题标题】:ArgumentOutOfRange Exception in c#c#中的ArgumentOutOfRange异常
【发布时间】:2010-12-01 09:51:42
【问题描述】:

我正在尝试以 Windows 形式访问 DataGridView 控件中所选行的列名,但我得到以下代码的 ArgumenOutOfRange 异常:

MessageBox.Show(dataGridView1.SelectedColumns[dataGridView1.CurrentCell.ColumnIndex].ToString());

制作:

ArgumentOutOfRangeException was unhandled

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

谁能告诉我如何克服这个错误?

【问题讨论】:

    标签: c# winforms exception


    【解决方案1】:

    SelectedColumns 是一个仅包含选定列的列表(是的,它就是这样工作的)。所以这个列表大小与Columns 属性列表的大小不同(这显然是你想要的)。

    MessageBox.Show(dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex].ToString());
    

    【讨论】:

      【解决方案2】:

      如果我没记错的话,那么您可能应该从 Columns 集合而不是 SelectedColumns 集合中获取列值。

      dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex]
      

      【讨论】:

        【解决方案3】:

        DataGridView.SelectedColumns 集合是与 DataGridView.Columns 分开的集合,可以有不同的列集(子​​集)。

        例如,如果你有一个 5 列的视图,并且选择了第三和第四,那么

        DataGridView.SelectedColumns.Count == 2
        DataGridView.Columns.Count == 5
        

        你们中的一些人正在使用第四列(索引为 3),您的代码变成了

        DataGridView.SelectedColumns[3]
        

        它(正确地)因 IndexOutOfBounds 而爆炸。

        总而言之,在您的情况下,您应该使用 Columns 属性,而不是 SelectedColumns。

        【讨论】:

          【解决方案4】:

          ColumnIndex 属性可以返回 -1(来自文档):

          包含的列的索引 细胞; -1 如果单元格不是 包含在列中。

          你会遇到这种情况吗?

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-09-14
            • 1970-01-01
            • 2019-10-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多