C#winform,BetterListView控件的问题,非常慢并且滞后很多

时间:2012-08-06 01:44:03

标签: c# winforms listview better-listview

我正在使用Component Owl的BetterListView Express。 在listView中有3列,FeatureNumber,FeatureName和FeatureCost .. 用户可以选择多个功能,右键单击并购买, 当用户购买功能时,我将其从listView中删除, 问题是,当他选择多件物品并立即购买时, 他们一个接一个地以一种非常缓慢的动作,一种慵懒的方式被移除。 不仅在选择和购买时,而且在listView首先显示时... 起初我以为这是由于我有listView背景图像.. 所以我压缩了它,但没有让那么大的差别.. 我甚至试图删除背景,仍然,滞后仍然... 如果您想知道,可用项目的字体是影响,带有黑色前色,不可用项目的字体是 Arial ,带有DimGray前色。

我正在使用带有Corei3,2Gig 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提前很多.. :))

1 个答案:

答案 0 :(得分:3)

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

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