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;

}

}