我正在学习如何在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对象是一列还是一行?如何添加信息行?提供一些帮助!谢谢!
答案 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)......