【问题标题】:Prevent listview from adding blank subitem防止列表视图添加空白子项
【发布时间】:2014-02-06 16:50:53
【问题描述】:

我有一个listview,其中的列是根据可用主题的数量动态创建的。当我创建一个新的ListViewItem 时,它会自动将一个空白subitem 添加到listview。由于列是动态创建的,因此子项会被替换。我就是这样做的。

foreach(int id in stud)
{
ListViewItem gtb = new ListViewItem();
foreach(int sname in subj)
{
    gtb.SubItems.Add(value1);
    gtb.SubItems.Add(value2);
    gtb.SubItems.Add(value3);
}
gtb.SubItems.Add(value4);
listView1.Items.AddRange(new ListViewItem[] { gtb });
}

我知道将value1 添加到新的ListViewItem(value1) 可以解决此问题,但我还有另一个subitemforeach loop 之外。我该如何解决这个问题?

【问题讨论】:

  • 尝试使用this。例如:如果 (value2 != null) 然后添加。
  • 值不为空等等让我修改问题
  • 发生的事情是 SubItem[0] 实际上是父 ListViewItem 因为你没有填充它,它是空的。
  • 你试过gtb.Text = value1吗?

标签: c# winforms listview


【解决方案1】:

添加将检查每个值的长度的“if”语句,然后如果长度大于零,则将项目添加到“gtb”。

【讨论】:

  • 它不是我想要过滤掉的空值。它是添加到每个 listviewitem 上的空白子项。
【解决方案2】:

创建一个String[],用它来收集您的子项目,然后使用它创建一个新的ListViewItem

String[] subItems = new String[subj.Count + 1];  //add however many extras you need in place of 1
for (int j = 0; j < subj.Count; j++)
    subItems[j] = subj[j];
//add whatever else to the array you want...
listView1.Items.Add(new ListViewItem(subItems));

【讨论】:

    【解决方案3】:

    我尝试手动添加一个宽度为 0 的新列,效果很好。

    【讨论】:

    • 在这种情况下,“作品”只是意味着隐藏。最好添加适当的项目而不是破解显示。当您尝试引用子项时,您稍后会为此付费,始终要记住忽略其中一项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-18
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    相关资源
    最近更新 更多