C# Listview Column Width Auto

C# ListView Column Width Auto

You gave the answer: -2 will autosize the column to the length of the text in the column header, -1 will autosize to the longest item in the column. All according to MSDN. Note though that in the case of -1, you will need to set the column width after adding the item(s). So if you add a new item, you will also need to assign the width property of the column (or columns) that you want to autosize according to data in ListView control.

ListView Column Width Auto

AutoResizeColumns is from the namespace System.Windows.Forms. I'm not sure if that will work with WPF or not. But you can set the width of the column to NAN to make it resize

In your XAML if you name your GridView as follows:

<GridView x:Name="dataGridView">

Then you could resize all columns with this

 foreach (GridViewColumn c in dataGridView.Columns)
{
c.Width = 0; //set it to no width
c.Width = double.NaN; //resize it automatically
}

Auto widths in ListView

Review the ColumnHeader.AutoResize() method. Call it after populating the Items, the form's OnLoad() method is the first chance.

listView columns not filling space

Try this,

foreach (ColumnHeader column in listView1.Columns){
column.Width = listView1.Width / listView1.Columns.Count;
}

Hope helps,

C# listview optimum column width

You should try

ListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);

even though it says "ColumnHeaderAutoResizeStyle.HeaderSize" it should auto resize to the largest item in the column, whether it's the header or a column member

Adjust ListView columns to fit with WinForms

  1. Programatic one. You'll have to maintain it in code.
  2. You can adjust last column size in your listview so that it would be automatically resized.
    Net sample:

In a ListView control, with the View
property set to Details, you can
create a multi-column output.
Sometimes you will want the last
column of the ListView to size itself
to take up all remaining space. You
can do this by setting the column
width to the magic value -2.

In the following example, the name of
the ListView control is lvSample:

[c#]
private void Form1_Load(object sender, System.EventArgs e)
{
SizeLastColumn(lvSample);
}

private void listView1_Resize(object sender, System.EventArgs e)
{
SizeLastColumn((ListView) sender);
}

private void SizeLastColumn(ListView lv)
{
lv.Columns[lv.Columns.Count - 1].Width = -2;
}

EDIT:

Programaticaly you can do that with own implemented algorithm. The problem is that the list view does not know what of the columns you would like to resize and what not. So you'll have in the resize method (or in resizeEmd method) to specify all the columns size change. So you calculate all the width of the listview then proportionaly divide the value between all columns.
Your columns width is multiple to 50. So you have the whole listview width of 15*х (x=50 in default state. I calculated 15 value based on number of your columns and their width) conventional units. When the form is resized, you can calculate new x = ListView.Width/15 and then set each column width to needed value, so

private void SizeLastColumn(ListView lv)
{
int x = lv.Width/15 == 0 ? 1 : lv.Width/15;
lv.Columns[0].Width = x*2;
lv.Columns[1].Width = x;
lv.Columns[2].Width = x*2;
lv.Columns[3].Width = x*6;
lv.Columns[4].Width = x*2;
lv.Columns[5].Width = x*2;
}


Related Topics



Leave a reply



Submit