Индекс вне диапазона, но я знаю, что столбцы есть - PullRequest
0 голосов
/ 27 мая 2019

РЕДАКТИРОВАТЬ: Обнаружен обходной путь, не используя динамически созданные таблицы.

Я динамически создаю таблицы, используя DataGridView в C #. Я пытаюсь установить столбец 0 AutoSizeMode, но я получаю сообщение об ошибке, что индекс выходит за пределы диапазона. Однако, даже не пытаясь получить доступ к столбцам с кодом, все мои данные правильно отображаются в ячейках, в двух столбцах, как и должно быть.

Я попытался отключить AutoGenerateColumns, но у меня вообще нет данных.

DataGridView mainTable = new DataGridView();
DataTable table = new DataTable();
table.Columns.Add("A");
table.Columns.Add("B");

// ... skipping the part where I populate the data in the table, I know the entire data is truly there...

mainTable.DataSource = table;
mainTable.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

1 Ответ

0 голосов
/ 27 мая 2019

Я уверен, что причина строки кода ...

mainTable.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;

не удается из-за того, что DataGridView mainTable еще не был добавлен в форму.

Любые команды пользовательского интерфейса, введенные ДО добавления DataGridView в форму, будут игнорироваться.

Добавление DataGridView к форме ДО того, как вы попытаетесь изменить ее столбцы, должно работать должным образом. Размещенный код НЕ отображается при добавлении сетки в форму.

DataGridView mainTable = new DataGridView();
DataTable table = new DataTable();
table.Columns.Add("A");
table.Columns.Add("B");
// ... skipping the part where I populate the data in the table, I know the entire data is truly there...
mainTable.DataSource = table;
this.Controls.Add(mainTable); // <- UI commands not ignored
mainTable.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...