0

我正在使用来自 Component Owl 的 BetterListView Express。在 listView 中有 3 列,FeatureNumber、FeatureName 和 FeatureCost.. 用户可以选择多个功能,右键单击它们并购买它们,当用户购买功能时,我将其从 listView 中删除,问题是当他选择多个项目并一次购买它们,它们以非常慢的动作,缓慢的方式一个接一个地被删除..不仅在选择和购买时,而且当 listView 最初出现时..起初我以为这是由于我有listView背景图片..所以我压缩了它,但并没有太大的不同..我什至尝试删除背景,仍然存在滞后..以防万一你想知道,字体可用的项目是影响前色为黑色,不可用项目的字体为Arial,前色为 DimGray。

我在一台带有 Corei3、2Gigs 的 Ram 和 1Gig ATI VGA 的东芝笔记本电脑上运行。

这是我用来删除项目的代码:(这实际上是它的一部分,还有其他与列表视图无关的东西,比如减少购买者的钱和类似的东西..)

private void purchaseFeatureToolStripMenuItem_Click(object sender, EventArgs e)
{
  int NumberOfSelectedItems = listView.SelectedItems.Count;
  for (int i = 0; i < NumberOfSelectedItems; i++)
  {
    int SelectedIndex = listView.SelectedItems[0].Index;
    if (Purchaser.Money >= Convert.ToInt16(listView.Items[SelectedIndex].SubItems[2].Text))
    { 
      //this is just to organize the rest of the features numbers.
      for (int k = SelectedIndex + 1; k < listView.Items.Count; k++)
      {
        int NextItemNumber = Convert.ToInt16(listView.Items[k].SubItems[0].Text);
        listView.Items[k].SubItems[0].Text = (--NextItemNumber).ToString();
      }
     listView.SelectedItems[0].Remove();
    }
   }
}

有没有办法摆脱这种滞后?还是因为我的规格?

任何帮助将不胜感激.. ThanX 很多提前.. :)

4

1 回答 1

3

在对控件进行多项更改之前,请始终调用BeginUpdate,然后在完成后调用EndUpdate

如果您不使用 BeginUpdate/EndUpdate,常规列表视图也会很慢。

于 2012-08-06T06:18:15.350 回答