在listView中创建列并添加项目

3D-*_*tiv 17 c# listview visual-studio-2010

我正在学习如何使用listViewin a 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);
    }
Run Code Online (Sandbox Code Playgroud)

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

最后我想知道如何在列中添加项目.我是否首先创建一个像这样的对象

ListViewItem item1 = new ListViewItem(???);
item1.SubItems.Add("text");
Run Code Online (Sandbox Code Playgroud)

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

Tom*_*Tom 41

您的第一个问题是您将-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);
}
Run Code Online (Sandbox Code Playgroud)

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

lvRegAnimals.Columns.Add("Id");
lvRegAnimals.Columns.Add("Name");
lvRegAnimals.Columns.Add("Age");
Run Code Online (Sandbox Code Playgroud)

有关更多重载的参考: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);
Run Code Online (Sandbox Code Playgroud)

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

item2.Tag = person;
Run Code Online (Sandbox Code Playgroud)

然后你可以提取它

var person = item2.Tag as Person;
Run Code Online (Sandbox Code Playgroud)

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

  • 你应该**添加**`lvRegAnimals.View = View.Details;`(或在设计器中设置View属性).否则,您只能看到第一列的值......此外,我遇到了所有列的自动尺寸(-2)的问题.当我将固定大小设置为一列时,视图显示所有列. (2认同)

Iam*_*man 33

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

lvRegAnimals.View = View.Details;
Run Code Online (Sandbox Code Playgroud)

然后在此之后添加列.

lvRegAnimals.Columns.Add("Id", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Name", -2, HorizontalAlignment.Left);
lvRegAnimals.Columns.Add("Age", -2, HorizontalAlignment.Left);
Run Code Online (Sandbox Code Playgroud)

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


小智 6

您需要为控件设置属性:

listView1.View = View.Details;
Run Code Online (Sandbox Code Playgroud)