我正在尝试清除并重新添加.net中SubItems
的ListViewItem
。
private void RefreshItem(ListViewItem item)
{
item.Text = accountNumber;
item.SubItems.Clear(); //in case there are any
item.SubItems.Add(name);
item.SubItems.Add(address);
item.SubItems.Add(phone);
item.SubItems.Add(workphone);
item.SubItems.Add(email);
item.SubItems.Add(idType);
item.SubItems.Add(idNumber);
item.SubItems.Add(idExpires);
...
}
但清除子项目也会清除Text。
注意:矛盾的是,清除
SubItems
也会清除Text
,但添加SubItems
也不会添加Text
。
当我只想更新SubItems时,问题也出现了:
private void RefreshItem(ListViewItem item)
{
item.SubItems.Clear(); //in case there are any
item.SubItems.Add(location);
item.SubItems.Add(date);
item.SubItems.Add(cashier);
item.SubItems.Add(totalBuyAmount);
item.SubItems.Add(totalSellAmount);
item.SubItems.Add(currencyCode);
item.SubItems.Add(exchangeRate);
item.SubItems.Add(isVip);
...
}
我如何Clear SubItems的ListViewItem,但不清楚Text?
答案 0 :(得分:2)
有趣的是,我从未注意到这种行为。如果没有更简单的方法,我会遍历并删除SubItem
大于Index
的所有0
。索引为SubItem
的{{1}}是与0
对应的{。}}。
供参考,请参阅SubItems
属性中的此注释:
ListViewItem.ListViewSubItemCollection中的第一个子项是 总是拥有子项目的项目。执行操作时 在集合中的子项目,一定要参考索引位置1 而不是0来改变第一个子项。
答案 1 :(得分:0)
为什么不改变SubItem的文本而不是删除和重新添加?
答案 2 :(得分:0)
在刷新datagridviews,listviews和类似小部件中的数据时,在更新周围使用SuspendLayout()和ResumeLayout()非常有用。这将允许您进行任何需要的清理或操作,而无需用户看到中间状态或大量闪烁。我使用它来帮助维护刷新和类似问题的排序顺序:
public void OnRefreshButtonClicked(object *sender)
{
myListView.SuspendLayout();
foreach (ListViewItem itm in myListView.Items)
{
RefreshItem(itm);
}
myListView.ResumeLayout();
}