【问题标题】:Filling in a ListView the correct way填写ListView的正确方法
【发布时间】:2014-06-18 06:42:35
【问题描述】:

您好,我正在尝试填写一个包含 6 列的列表视图。我用这段代码填充它们:

ListViewItem item1 = new ListViewItem();
ListViewItem item2 = new ListViewItem();
ListViewItem item3 = new ListViewItem();
ListViewItem item4 = new ListViewItem();
ListViewItem item5 = new ListViewItem();
ListViewItem item6 = new ListViewItem();


for (int i = 0; i < _leftTimeTable.Cars.Count; i++)
{

    List<TimeSpan> fgarList = _leftTimeTable.Cars[i].GetStopTimes(StopActions.FromGarage);
    List<TimeSpan> tgarList = _leftTimeTable.Cars[i].GetStopTimes(StopActions.ToGarage);

    _headersTable[i + 1, 0] = (i + 1).ToString();

    int column;

    item1.SubItems.Add(i.ToString());

    column = 1;

    for (int j = 0; j < fgarList.Count && column < 4; j++)
    {                    
       item2.SubItems.Add(Car.GetFormattedTime(fgarList[j]));                    
    }

    column = _headersTable.GetLength(1) - 3;
    for (int j = tgarList.Count - 1; j >= 0 && column > 1; j--)
    {
        item5.SubItems.Add(Car.GetFormattedTime(tgarList[j]));                   
    }

    if (_leftTimeTable.Cars[i].GetDriverChangeTimes.Count > 0) _headersTable[i + 1, 5] = Car.GetFormattedTime(_leftTimeTable.Cars[i].GetDriverChangeTimes[0]);

}
listViewIzvlechenieLEFT.Items.AddRange(new ListViewItem[] { item1, item2, item3, item4, item5, item6 });

到目前为止一切顺利,但数据填充方式错误。它不是垂直填充的,而是水平填充的。是否可以垂直填写数据?我做错了吗?

【问题讨论】:

  • 有一个叫做 View 的属性,你可以用它来设置你的视图类型
  • 我认为您的意思是为每个元素添加一个新的ListViewItem,而不是SubItems
  • 我正在为每个元素设置 ListViewItem。它在我的代码的顶部。它是为每个项目设置的。
  • 横向添加子项,纵向添加listviewitems
  • item1 到 item6 被声明为 listviewitems 但 item1 没有“add”属性它只有 SubItems.add :/ 如果我这样做: item2.ListView.Items.Add(Car. GetFormattedTime(tgarList[j]));整个程序崩溃

标签: c# winforms listview


【解决方案1】:

ListView 中的每个“行”都由一个 ListViewItem 表示。该行的每一列都由 ListViewItem 的SubItems 表示。

所以如果你想用 6 列填充一行,你可以这样做:

ListViewItem itemX;

for (int i = 0; i < 10; i++)
{
    itemX = new ListViewItem(i.ToString()); // First column
    itemX.SubItems.Add("Column 2")
    itemX.SubItems.Add("Column 3")
    itemX.SubItems.Add("Column 4")
    itemX.SubItems.Add("Column 5")
    itemX.SubItems.Add("Column 6")

    myListView.Items.Add(itemX); // Add the complete row to the ListView
}

上面的示例将在您的 ListView 中添加 10 行,包含 6 列:

 1 | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6
 2 | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6
 3 | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6
 4 | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6
 5 | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6
 6 | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6
 7 | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6
 8 | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6
 9 | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6
10 | Column 1 | Column 2 | Column 3 | Column 4 | Column 5 | Column 6

只需确保您在设计模式下创建了列并将View 属性设置为Details

【讨论】:

  • 是的,我之前看到了我的错误,但我忘了更新。问题是我将 item1...item6 添加到列表视图的位置。
猜你喜欢
  • 1970-01-01
  • 2011-06-07
  • 2015-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多