我正在使用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提前很多.. :))
答案 0 :(得分:3)
在对控件进行多项更改之前,请在完成后始终调用 BeginUpdate ,然后调用 EndUpdate 。
如果您没有使用BeginUpdate / EndUpdate,那么常规列表视图也会很慢。