我正在尝试在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
有谁能告诉我如何克服这个错误?
答案 0 :(得分:4)
SelectedColumns
是一个仅包含所选列的列表(是的,这就是它的工作原理)。所以这个列表大小与Columns
属性列表的大小不同(显然是你想要的)。
MessageBox.Show(dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex].ToString());
答案 1 :(得分:1)
如果我没有错,那么您可能应该从Columns
集合中获取列值,而不是从SelectedColumns
集合中获取列值。
dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex]
答案 2 :(得分:0)
答案 3 :(得分:0)
DataGridView.SelectedColumns集合是DataGridView.Columns的一个独立集合,可以有不同的列集(子集)。
例如,如果您有一个5列视图,并且选择了第三个和第四个,那么
DataGridView.SelectedColumns.Count == 2
DataGridView.Columns.Count == 5
并且您正在使用第四列(索引3)您的代码变为
DataGridView.SelectedColumns[3]
使用IndexOutOfBounds爆炸(正确)。
总而言之,在您的情况下,您应该使用Columns属性,而不是SelectedColumns。