Maj*_*jid 92
用这个:
yourListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
yourListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
Run Code Online (Sandbox Code Playgroud)
从这里开始
小智 22
我做了一个程序,多次清理并重新填充我的列表视图.出于某种原因,每当我添加width = -2的列时,我遇到第一列太长的问题.我为解决这个问题所做的就是创建这个方法.
private void ResizeListViewColumns(ListView lv)
{
foreach(ColumnHeader column in lv.Columns)
{
column.Width = -2;
}
}
Run Code Online (Sandbox Code Playgroud)
关于这种方法的好处是你几乎可以把它放在任何地方调整所有列的大小.只需通过你的ListView
.
你可以使用这样的东西,在参数中传递你想要的ListView
private void AutoSizeColumnList(ListView listView)
{
//Prevents flickering
listView.BeginUpdate();
Dictionary<int, int> columnSize = new Dictionary<int,int>();
//Auto size using header
listView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
//Grab column size based on header
foreach(ColumnHeader colHeader in listView.Columns )
columnSize.Add(colHeader.Index, colHeader.Width);
//Auto size using data
listView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
//Grab comumn size based on data and set max width
foreach (ColumnHeader colHeader in listView.Columns)
{
int nColWidth;
if (columnSize.TryGetValue(colHeader.Index, out nColWidth))
colHeader.Width = Math.Max(nColWidth, colHeader.Width);
else
//Default to 50
colHeader.Width = Math.Max(50, colHeader.Width);
}
listView.EndUpdate();
}
Run Code Online (Sandbox Code Playgroud)
还有另一个有用的方法AutoResizeColumn
,它允许您使用所需的参数自动调整特定列的大小。
你可以这样称呼它:
listview1.AutoResizeColumn(1, ColumnHeaderAutoResizeStyle.ColumnContent);
listview1.AutoResizeColumn(2, ColumnHeaderAutoResizeStyle.ColumnContent);
listview1.AutoResizeColumn(3, ColumnHeaderAutoResizeStyle.HeaderSize);
listview1.AutoResizeColumn(4, ColumnHeaderAutoResizeStyle.HeaderSize);
Run Code Online (Sandbox Code Playgroud)