2012-07-14 136 views
7

关于列表框到ListView的迁移。填充listview多列

你好。

我有一个列表框我这样的条目添加到:

1;内容

其中1始终是一个int和内容始终是一个字符串。我可以分别访问每一个。

现在我想要的结果进行排序递减,即:

1;content 
4;content2 
2;content3 

=>

4;content2 
2;content3 
1;content 

由于这不好看,我想用一个ListView来代替。就像这样:

Frequency | Content 
=============== 
4 | content2 
2 | content3 
1 | content 

问题是,表格属性似乎并不存在,正在把所有条目相同的符号,在资源管理器列表视图。我也有问题“达到”第二列(内容),即我只看到4,2,1。

我该如何准备和填充c#.net 4中的listview?

回答

30

要设置的ListView进入详细信息模式:

 listView1.View = View.Details; 

然后设置你的两列:

 listView1.Columns.Add("Frequency"); 
     listView1.Columns.Add("Content"); 

然后添加您的项目:

 listView1.Items.Add(new ListViewItem(new string[]{"1", "content"})); 
     listView1.Items.Add(new ListViewItem(new string[]{"4", "content2"})); 
     listView1.Items.Add(new ListViewItem(new string[]{"2", "content3"})); 

我选择使用ListViewItem构造函数的重载,该构造函数接受表示列值的字符串数组。但是有22个重载!仔细看看,找到最适合你情况的人。

要设置项目的自动分拣:

 listView1.Sorting = SortOrder.Descending; 
+0

感谢你这么多!这是我发现的唯一答案,其实很简单!正是我需要的。(我正在用XML填充列表视图) 你现在是我的英雄。把我的赞成:) – NoobishPro 2013-11-01 19:16:04

+1

也为格式化你可以使用'listView1.GridLines = true;',对齐'listView1.Columns [0] .TextAlign = Horizo​​ntalAlignment.Center;'。有关列宽请参阅此处:http://stackoverflow.com/questions/1257500/c-sharp-listview-column-width-auto#16955210。 – SharpC 2015-01-08 16:11:21

+0

作品像一个魅力,终于找到了这么长时间后的答案哈哈,谢谢你♥ – 2017-07-02 11:42:35

0

经典使用我们ListView GridView。 GridView是添加列的东西。

GridView

1

我知道这个帖子是一岁多,但我认为这可能是有用的,我写了一篇文章年前关于使用一个ListView作为一个多ListBox,其中包含用于填充它的代码。这篇文章可以在这里找到(Using a ListView as a multicolumn ListBox)它是用VB.NET编写的,但是对于C#代码几乎完全一样,我可以用C#重写它,并且会为它添加一个链接,但这将是另一次。

希望这会有所帮助,如果不随时让我知道:)

0

要添加列表视图中标题和项添加到列表视图,试试这个代码:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     Lstv1.Columns.Add("Paramname", CInt(Lstv1.Width/2)) 
     Lstv1.Columns.Add("Paramorder", CInt(Lstv1.Width/2)) 
    End Sub 


Private Sub appendlistview(ByVal Paramname As String, ByVal Paramorder As String) 

    Dim newitem As New ListViewItem(Paramname) 
    newitem.SubItems.Add(Paramorder) 

    Lstv1.Items.Add(newitem) 

End Sub 


Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnAdd.Click 

    Call appendlistview(TextBox1.Text, TextBox2.Text) 
End Sub 
+0

这是标记为C#虽然,而不是VB。 – Nyerguds 2016-08-04 09:14:43