Я нашел несколько примеров с использованием Win32 api или имитации комбинации кнопок ^ + (ctrl-+) используя SendKeys, но, по крайней мере, с методом SendKeys список захватывает курсор и устанавливает его в песочные часы, пока я не нажму кнопку запуска на моем клавиатура. Как лучше всего это сделать?
Я хочу, чтобы они меняли размер в зависимости от длины отображаемых данных.





Согласно MSDN, если вы установите ширину столбца на -1, тогда он автоматически изменится на самый широкий элемент
Похоже, у меня это не работает. Я добавляю элементы списка во время выполнения, а столбцы остаются тонкими.
Странный. Возможно, ListView должен быть видимым и с уже добавленными элементами. Или, возможно, вызов Application.DoEvents может помочь? Вы всегда можете попробовать отправить LVSCW_AUTOSIZE самостоятельно, используя P / Invoke: vbnet.mvps.org/index.html?code/comctl/lvcolumnautosize.htm (ссылка для VB6)
Вы пробовали заключать обновления представления списка в скобки BeginUpdate () / EndUpdate ()? Возможно, уловка -1 сработает, когда вы специально завершите обновление, запустив пересчет способа отображения представления списка.
Похоже, звонок на myListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent) сделает то, что вы хотите. Я бы подумал, просто вызовите его после добавления элемента.
Подробнее здесь
Должен быть ColumnHeaderAutoResizeStyle :: ColumnContent
Ссылка мертвая.
пропустите все столбцы и установите ширину на -1 после добавления содержимого.
После добавления следующей процедуры в свой код вызовите ее из любой процедуры / функции. Однако не используйте его в своей процедуре "Form_Load". Вызывайте его только после того, как вы добавили элемент в свой ListView (или, если вы делаете несколько добавлений, вызывайте его один раз в конце всех добавлений):
Private Sub AutoSizeListViewColumns(oListView As ListView)
Dim nCol As Integer = 0
SuspendLayout()
For nCol = 0 To (oListView.Columns.Count - 1)
oListView.Columns(nCol).Width = -1 'forces autosizing on column
Next
oListView.Refresh()
ResumeLayout()
End Sub
Не могли бы вы подробнее рассказать о том, что означает «автоматическое изменение размера»? Вы имеете в виду, что хотите, чтобы они перемещались при изменении размера окна (и представления списка), или вы хотите, чтобы они меняли размер в зависимости от длины данных, которые они показывают?