I have face resize problem of listview columns. If you anchor/docking the listview to normal winform than the listview anchor or docking works well. I mean listview will resize and fit to winforms as winforms maximized but the columns you have designed on it which is not resize with listview.
My question is : Is there any way to resize the columns of listview with listview to fit winform size?.
Listview Design Code:
private void Form1_Load(object sender, EventArgs e)
{
listView1.View = View.Details;
listView1.LabelEdit = true;
listView1.BackColor = Color.GreenYellow;
listView1.Columns.Add("Date", 100, HorizontalAlignment.Left);
listView1.Columns.Add("TransID", 50, HorizontalAlignment.Left);
listView1.Columns.Add("voucher", 100, HorizontalAlignment.Right);
listView1.Columns.Add("particulars", 300, HorizontalAlignment.Left);
listView1.Columns.Add("deposit", 100, HorizontalAlignment.Right);
listView1.Columns.Add("withdrawal", 100, HorizontalAlignment.Right);
string connstr = "server=.;initial catalog=DataBase;uid=UID;pwd=PWD";
SqlConnection con = new SqlConnection(connstr);
con.Open();
listView1.Items.Clear();
listView1.Refresh();
string sql = "select date=convert(varchar,date,103),transID,max(particulars)as particulars,sum(deposit)as deposit,sum(withdrawal) as withdrawal,voucher from debank group by date,transID,voucher";
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter dap = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
dap.Fill(ds);
DataTable dt = ds.Tables[0];
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow dr = dt.Rows[i];
ListViewItem lvi = new ListViewItem(dr["date"].ToString());
lvi.SubItems.Add(dr["transID"].ToString());
lvi.SubItems.Add(dr["voucher"].ToString());
lvi.SubItems.Add(dr["particulars"].ToString());
lvi.SubItems.Add(dr["deposit"].ToString());
lvi.SubItems.Add(dr["withdrawal"].ToString());
listView1.Items.Add(lvi);
listView1.FullRowSelect = true;
}
SizeLastColumn(listView1);
}
Net sample:
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/15and then set each column width to needed value, so