C#ListView列宽Auto

我如何设置列的宽度ac#winforms listview控制自动。 像宽度= -1 / -2?

你给出了答案:-2将列自动化为列标题中文本的长度,-1将自动调整为列中最长的项目。 所有根据MSDN 。 请注意,在-1的情况下,您需要在添加项目后设置列宽。 因此,如果添加一个新项目,则还需要根据ListView控件中的数据分配要自动调整的列(或多列)的width属性。

用这个:

 yourListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); yourListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); 

从这里

我做了一个程序,清理并重新填充我的listview多次。 由于某种原因,每当我添加宽度为-2的列时,遇到第一列太长的问题。 我做了什么来解决这个问题是创build这种方法。

 private void ResizeListViewColumns(ListView lv) { foreach(ColumnHeader column in lv.Columns) { column.Width = -2; } } 

关于这个方法的好处是,你几乎可以把它放在任何地方来调整你所有的列。 只需传入你的ListView

在Fredrik的答案上稍微扩展一下,如果你想设置列的自动resize的宽度,例如:将第一列的自动调整宽度设置为70:

 myListView.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.None); myListView.Columns[0].Width = 70; myListView.Columns[0].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent); 

该解决scheme将首先根据列数据重新调整列的大小,如果resize的宽度小于标题大小,则将调整列的大小以至less适合标题。 这是一个非常丑陋的解决scheme,但它的工作原理。

 lstContacts.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); colFirstName.Width = (colFirstName.Width < 60 ? 60 : colFirstName.Width); colLastName.Width = (colLastName.Width < 61 ? 61 : colLastName.Width); colPhoneNumber.Width = (colPhoneNumber.Width < 81 ? 81 : colPhoneNumber.Width); colEmail.Width = (colEmail.Width < 40 ? 40 : colEmail.Width); 

lstContacts是ListView。 colFirstName是一列,其中60是适合标题所需的宽度。 等等。

我相信作者正在寻找一个通过IDE的等效方法,将生成后面的代码,并确保所有的参数,等等。从MSfind这个:

在Windows窗体devise器上创build事件处理程序

来自VB背景我自己,这就是我正在寻找,这里是点击不利的简短版本:

  1. 单击要为其创build事件处理程序的窗体或控件。
  2. 在属性窗口中,单击事件button
  3. 在可用事件列表中,单击要为其创build事件处理程序的事件。
  4. 在事件名称右侧的框中,input处理程序的名称,然后按ENTER键