19

我正在学习如何使用listViewin awindowsForm并且我有一些希望在这里解决的问题。第一件事是当使用以下代码创建列时:

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

4 回答 4

45

您的第一个问题是您将 -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;

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

于 2012-07-03T13:02:50.010 回答
39

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

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);

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

于 2014-12-10T22:25:42.903 回答
6

您需要为控件设置属性:

listView1.View = View.Details;
于 2016-03-15T11:53:03.587 回答
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 大小的列表视图 .....我们在列宽 -2 中声明自动宽度.. 适合在列表视图中,我们可以将列表视图宽度分为 3 部分(83,100,100)...

于 2016-08-29T22:16:56.563 回答