ListViewItem.ListViewSubItem 类
ListViewItem.UseItemStyleForSubItems 属性
ListView.AutoResizeColumn 方法public Form1()
{
InitializeComponent();

this.listView1.Columns.Add("Name", 80, HorizontalAlignment.Right);
this.listView1.Columns.Add("Date", 40/*-2自动列宽*/, HorizontalAlignment.Center);
ListViewItem itemMe = new ListViewItem();
listView1.Items.Add(itemMe).Text="First"; // 设置UseItemStyleForSubItems属性为false改变SubItems的样式
itemMe.UseItemStyleForSubItems = false;

// Add the expense subitem.
ListViewItem.ListViewSubItem expenseItem = itemMe.SubItems.Add("Expense");
//我如何设置Expense这个item的宽度呢? 没找到是ListView的属性还是ListViewItem的属性?

// Change the expenseItem object's color and font.
expenseItem.ForeColor = System.Drawing.Color.Red;
expenseItem.Font = new System.Drawing.Font(
"Arial", 12, System.Drawing.FontStyle.Italic);
this.listView1.View = System.Windows.Forms.View.Details;

//设置ListView根据列表头自动调整宽度
//this.listView1.AutoResizeColumn(0, 
//    ColumnHeaderAutoResizeStyle.HeaderSize);
//设置ListView根据列内容自动调整宽度
this.listView1.AutoResizeColumn(1, 
    ColumnHeaderAutoResizeStyle.ColumnContent);
}

解决方案 »

  1.   

    ListViewItem.UseItemStyleForSubItems 属性
    ListView.AutoResizeColumn 方法
    我照着你的说法改了,但是看起来没有起到什么作用,现在的代码是:    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                listView1.Columns.Add("First");
                listView1.Columns.Add("Second");
                var item = new ListViewItem();
                listView1.Items.Add(item).Text = "expense";
                item.UseItemStyleForSubItems = false;
                var sub = item.SubItems.Add("subbbbbbbbbbb");
                sub.ForeColor = Color.Red;
                sub.Font = new Font("Arial", 12, FontStyle.Italic);
                listView1.AutoResizeColumn(1, ColumnHeaderAutoResizeStyle.ColumnContent);
                listView1.View = View.Details;
            }
        }
    但是现实出来的效果是列的宽度没有被自动调整,字符串被截断了,如下图:
      

  2.   

     listView1.Columns.Add("First"); 看Add 的构造函数,可以设置width的。
      

  3.   

    谢谢,我知道ColumnHeader.Width可以设置为一个固定的大小,如下:            var header1 = listView1.Columns.Add("First");
                var header2 = listView1.Columns.Add("Second");
                header1.Width = 200;但是这不是我期望的效果。
    我希望达到的效果是根据列内容的长度来自动调整列宽,所以我想用到ColumnHeaderAutoResizeStyle.ColumnContent这个feature。但看起来我用了,没有效果。这是为什么呢?
      

  4.   

    谢谢,我知道ColumnHeader.Width可以设置为一个固定的大小,如下:            var header1 = listView1.Columns.Add("First");
                var header2 = listView1.Columns.Add("Second");
                header1.Width = 200;但是这不是我期望的效果。
    我希望达到的效果是根据列内容的长度来自动调整列宽,所以我想用到ColumnHeaderAutoResizeStyle.ColumnContent这个feature。但看起来我用了,没有效果。这是为什么呢?

    给个连接
    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.listview.autoresizecolumn(v=vs.110).aspx
      

  5.   

    谢谢,我知道ColumnHeader.Width可以设置为一个固定的大小,如下:            var header1 = listView1.Columns.Add("First");
                var header2 = listView1.Columns.Add("Second");
                header1.Width = 200;但是这不是我期望的效果。
    我希望达到的效果是根据列内容的长度来自动调整列宽,所以我想用到ColumnHeaderAutoResizeStyle.ColumnContent这个feature。但看起来我用了,没有效果。这是为什么呢?

    给个连接
    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.listview.autoresizecolumn(v=vs.110).aspx谢谢你发的这个链接,我照着上面的做法,把下面这句:listView1.View = View.Details; 
    放到了InitializeComponent()后面就可以了!
    问题解决!