Исключение ArgumentOutOfRange в c # - PullRequest
2 голосов
/ 01 декабря 2010

Я пытаюсь получить доступ к имени столбца выбранной строки в элементе управления DataGridView в форме Windows, но получаю 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

Может ли кто-нибудь сказать мне, как я могу преодолеть эту ошибку?

Ответы [ 4 ]

4 голосов
/ 01 декабря 2010

SelectedColumns - это список, который содержит только выбранные столбцы (да, вот как это работает). Таким образом, этот размер списка отличается от размера списка свойств Columns (что, разумеется, и нужно).

MessageBox.Show(dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex].ToString());
1 голос
/ 01 декабря 2010

Если я не ошибаюсь, то, вероятно, вы должны получать значение столбца из коллекции Columns, а не из коллекции SelectedColumns.

dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex]
0 голосов
/ 01 декабря 2010

Коллекция DataGridView.SelectedColumns является отдельной коллекцией от DataGridView.Columns и может иметь другой набор (подмножество) столбцов.

Например, если у вас есть представление 5 столбцов, а третий и четвертый выбраны, то

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

и вы используете четвертый столбец (индекс 3), ваш код становится

DataGridView.SelectedColumns[3]

, который взрывается (правильно) с IndexOutOfBounds.

Чтобы подвести итог, в вашем случае вы должны использовать свойство Columns, а не SelectedColumns.

0 голосов
/ 01 декабря 2010

Свойство ColumnIndex может возвращать -1 (из документации):

Индекс столбца, который содержит ячейку;-1, если ячейка не содержится в столбце.

Может ли это иметь место для вас?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...