【问题标题】:Listview filling issueListview填充问题
【发布时间】:2009-10-13 02:56:56
【问题描述】:

我需要知道这里发生了什么。实际上我的目的是另外添加一个列并显示内容。我添加了列但我想知道 完成在该列中显示项目所需的代码流

ManagedDeviceCollection list = new ManagedDeviceCollection();
try
{
    if(SpoServer == null)
       return;

    _listSelected.BeginUpdate();
    _listAvailable.BeginUpdate();

    #region populate the selected list

    // Collect selected items.
    object[] selected = new object[_listSelected.SelectedItems.Count];
    _listSelected.SelectedItems.CopyTo(selected, 0);

    // Clear listview.
    _listSelected.Items.Clear();

    // Add systems.
    ResourcePolicySystemsLVI item;
    foreach(ManagedDevice md in PolicySystemsList)
    {
       item = new ResourcePolicySystemsLVI(md);
       item.Update();
       foreach(object obj in selected)
       {
          item.Selected = (((ResourcePolicySystemsLVI)obj).Data == item.Data);
          break;
       }
       _listSelected.Items.Add(item);
    }

    // Sort list.
    _listSelected.Sort();

    // Ensure selected items are visible.
    if(_listSelected.SelectedItems.Count > 0)
    {
       _listSelected.SelectedItems[_listSelected.SelectedItems.Count 
           - 1].EnsureVisible();
       _listSelected.SelectedItems[0].EnsureVisible();
    }

    #endregion

    #region populate the available list

    // Collect selected items.
    selected = new object[_listAvailable.SelectedItems.Count];
    _listAvailable.SelectedItems.CopyTo(selected, 0);

    // Clear listview.
    _listAvailable.Items.Clear();

    // Add systems.
    ResourcePolicyAvailSystemsLVI item2;
    foreach(ManagedDevice md in AvailableSystemsList)
    {
       item2 = new ResourcePolicyAvailSystemsLVI(md);
       item2.Update();
       foreach(object obj in selected)
       {
           item2.Selected = (((ResourcePolicyAvailSystemsLVI)obj).Data 
               == item2.Data);
           break;
       }
       _listAvailable.Items.Add(item2);
    }

    // Sort list.
    _listAvailable.Sort();

    // Ensure selected items are visible.
    if(_listAvailable.SelectedItems.Count > 0)
    {
       _listAvailable.SelectedItems[_listAvailable.SelectedItems.Count 
           - 1].EnsureVisible();
       _listAvailable.SelectedItems[0].EnsureVisible();
    }

    #endregion

    _listSelected.EndUpdate();
    _listAvailable.EndUpdate();

【问题讨论】:

    标签: c# .net winforms listview


    【解决方案1】:

    要在第一列之后显示文本,请使用 ListViewItem.SubItems 集合。例如,您可以如下修改主循环:

    item2 = new ResourcePolicyAvailSystemsLVI(md);
    // skipped some of your code
    item2.SubItems.Add("My second piece of info");  // this is what puts data into the second column
    

    从您的问题中我不确定您是否已经将必要的列添加到 ListView:如果没有,您必须使用 ListView.Columns.Add 这样做才能显示子项。

    【讨论】:

    • 我添加了新列,但是这个列表视图已经有两列,但我不知道它们如何在该列中显示数据,不同的方式
    • 不确定我是否理解评论,彼得——不确定“他们”是谁或“不同的方式”指的是什么。要在附加列中显示数据,请使用 ListViewItem.SubItems.Add。如果我误解了评论,那么您能否澄清什么对您不起作用或您需要哪些其他信息?
    • 您创建一个新的 ListViewItem(您将其称为 item2)并将其添加到 ListView.Items。这就是您已经在做的事情,它会导致显示行,ListViewItem 内容在第一列中。然后调用 item2.SubItems.Add()。这是新位,它会导致新子项出现在下一列(在本例中为第二列)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-02-13
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多