c# listView中列宽随列中的内容自动调整
在listView中列宽自动调整有相应的方法,但是达不到自己的要求,所以自己写了一个方法。
代码如下:
public void AutoResizeColumnWidth(ListView lv)
{
// lv = new ListView();
int count = lv.Columns.Count;
int MaxWidth = 0;
Graphics graphics = lv.CreateGraphics();
Font font = lv.Font;
ListView.ListViewItemCollection items = lv.Items;
string str;
int width;
lv.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
for (int i = 0; i < count; i++)
{
str = lv.Columns[i].Text;
MaxWidth = lv.Columns[i].Width;
foreach (ListViewItem item in items)
{
str = item.SubItems[i].Text;
width = (int)graphics.MeasureString(str, font).Width;
if (width > MaxWidth)
{
MaxWidth = width;
}
}
//if (i == 0)
//{
// lv.Columns[i].Width = lv.SmallImageList.ImageSize.Width + MaxWidth;
//}
lv.Columns[i].Width = MaxWidth;
}
}