C# ListView Column Width Auto

后端 未结 10 1163
傲寒
傲寒 2020-11-28 07:04

How can I set the column width of a c# winforms listview control to auto. Something like width = -1 / -2 ?

10条回答
  •  青春惊慌失措
    2020-11-28 07:49

    You can use something like this, passing the ListView you want in param

        private void AutoSizeColumnList(ListView listView)
        {
            //Prevents flickering
            listView.BeginUpdate();
    
            Dictionary columnSize = new Dictionary();
    
            //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();
        }
    

提交回复
热议问题