0

ComponentOwlのBetterListViewExpressを使用しています。listViewには、FeatureNumber、FeatureName、FeatureCostの3つの列があります。ユーザーは複数の機能を選択し、それらを右クリックして購入できます。ユーザーが機能を購入すると、listViewから削除します。問題は、複数のアイテムを選択して一度に購入すると、非常にゆっくりとした動きで次々に削除されます。選択して購入するときだけでなく、listViewが最初に表示されたときも..最初はこれだと思いました私が持っていたlistViewの背景画像のために..それを圧縮しましたが、それほど大きな違いはありませんでした..背景を削除しようとしましたが、それでも遅れが残っていました..念のために、フォント利用可能なアイテムのはImpactですフォアカラーは黒で、使用できないアイテムのフォントはDimGrayフォアカラーのArialです。

Corei3、2GigのRAM、1GigATIVGAを搭載したToshibaラップトップで実行しています。

これは私がアイテムを削除するために使用したコードです:(これは実際にはその一部です。購入者のお金を減らすなど、リストビューとは関係のないものが他にもあります..)

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 に答える