在listView中创建列并添加项目

时间:2012-07-03 12:42:27

标签: c# visual-studio-2010 listview

我正在学习如何在listView中使用windowsForm,我有一些问题希望在这里解决。第一件事是 我正在使用以下代码创建列

private void initListView()
    {
        // Add columns
        lvRegAnimals.Columns.Add("Id", -3,HorizontalAlignment.Left);
        lvRegAnimals.Columns.Add("Name", -3, HorizontalAlignment.Left);
        lvRegAnimals.Columns.Add("Age", -3, HorizontalAlignment.Left);
    }

当我运行程序时,列的名称不可见,它们都在左下角,我必须“拖动”它们才能读取文本。我做错了什么?

最后我想知道如何在列中添加项目。我是否首先创建一个像

这样的对象
ListViewItem item1 = new ListViewItem(???);
item1.SubItems.Add("text");

每个listViewItem对象是一列还是一行?如何添加信息行?提供一些帮助!谢谢!

4 个答案:

答案 0 :(得分:38)

您的第一个问题是您将-3传递给Columns.Add的第二个参数。它需要为-2才能自动调整列的大小。来源:http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.columns.aspx(查看底部代码示例的评论)

private void initListView()
{
    // Add columns
    lvRegAnimals.Columns.Add("Id", -2,HorizontalAlignment.Left);
    lvRegAnimals.Columns.Add("Name", -2, HorizontalAlignment.Left);
    lvRegAnimals.Columns.Add("Age", -2, HorizontalAlignment.Left);
}

您还可以使用其他重载Add(string)。例如:

lvRegAnimals.Columns.Add("Id");
lvRegAnimals.Columns.Add("Name");
lvRegAnimals.Columns.Add("Age");

更多重载参考:http://msdn.microsoft.com/en-us/library/system.windows.forms.listview.columnheadercollection.aspx

其次,要将项添加到ListView,您需要创建ListViewItem的实例并将它们添加到listView的Items集合中。您将需要使用string []构造函数。

var item1 = new ListViewItem(new[] {"id123", "Tom", "24"});
var item2 = new ListViewItem(new[] {person.Id, person.Name, person.Age});
lvRegAnimals.Items.Add(item1);
lvRegAnimals.Items.Add(item2);

您还可以在项目的Tag属性中存储对象。

item2.Tag = person;

然后你可以提取它

var person = item2.Tag as Person;

如果您有任何问题,请告诉我,我希望这会有所帮助!

答案 1 :(得分:31)

我没有看到有人正确回答这个问题。所以我在这里张贴。要显示列,您需要指定以下行。

lvRegAnimals.View = View.Details;

然后在此之后添加列。

lvRegAnimals.Columns.Add("Id", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Name", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Age", -2, HorizontalAlignment.Left);

希望这可以帮助其他人在将来寻找这个答案。

答案 2 :(得分:6)

您需要为控件设置属性:

listView1.View = View.Details;

答案 3 :(得分:0)

            listView1.View = View.Details;
        listView1.Columns.Add("Target No.", 83, HorizontalAlignment.Center);
        listView1.Columns.Add("   Range   ", 100, HorizontalAlignment.Center);
        listView1.Columns.Add(" Azimuth ", 100, HorizontalAlignment.Center);     

我也有同样的问题..我将列拖到左边......但现在好了..所以让我说我有283 * 196大小的listview .....我们在列宽-2中声明对于自动宽度..为了在列表视图中拟合,我们可以将列表视图宽度分成3个部分(83,100,100)......