Вопрос

У меня есть DataGridView, в который я добавляю данные программно.У меня для параметра AutoSizeRowsMode установлено значение AllCells, а для параметра WrapMode для RowsDefaultCellStyle установлено значение True.Если я добавляю многострочную строку в DataGridView, она отображается нормально (автоматическое масштабирование строки для отображения нескольких строк).Однако, если я скрою столбец, содержащий многострочные данные (так, чтобы в оставшихся столбцах были только однострочные данные), размер строки изменится на одну строку, но когда я изменил вид скрытого столбца, размеры строк не изменились.Если я изменю размер формы, то строки будут исправлены.

Следующий код показывает, как я переключаю видимость столбца:notificationDataGridView.Столбцы [1].Видимый = !notificationDataGridView.Столбцы [1].Видимый;

Кто-нибудь может мне помочь, как это исправить?Я перепробовал все комбинации Аннулирования и обновления, какие только смог придумать.

Это было полезно?

Решение

Хорошо, я не знаю, ошибка ли это в DataGridView или что-то еще, но вот способ заставить это работать.После звонка в:

notificationDataGridView.Columns[1].Visible = !notificationDataGridView.Columns[1].Visible;

добавьте эти две строки кода:

notificationDataGridView.DefaultCellStyle.WrapMode = DataGridViewTriState.NotSet;
notificationDataGridView.DefaultCellStyle.WrapMode = DataGridViewTriState.True;

Не спрашивайте меня почему, но, похоже, это работает.Если у кого-то есть лучшее решение, пожалуйста, опубликуйте его!

Другие советы

Я столкнулся с похожей проблемой с неправильным изменением высоты строк. В моем DataGridView я использую событие CellFormatting для записи пользовательских данных в DataGridViewTextBoxColumn, который имеет AutoSizeRowsMode = AllCells и DefaultCellStyle.WrapMode = DataGridViewTriState.True в соответствующем столбце. Я использую \ r \ n в тексте ячейки для этого столбца, чтобы добавить дополнительные строки. После изменения данных, чтобы добавить дополнительную строку в одну из строк, она не изменила размер, поэтому не показала добавленную мной дополнительную строку. Я попробовал вышеуказанный обходной путь, чтобы заставить его перерисовать высоту строки, но это не сработало. Следующий неприятный обходной путь мне помог:

dataGridView.Width++;
dataGridView.Width--;

Странно, но этот хак работал только путем сброса ширины, а не высоты.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top