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;
            }
        }

posted @ 2013-10-31 14:45  星梦软园  阅读(2817)  评论(0编辑  收藏  举报