0

実行時にユーザーが提供する検索クエリに従ってファイルの名前を含むラベルを作成し、それらを表示する GUI プログラムがあります。表示されるラベルの数は、ユーザーの入力によって大きく異なります。
no は 0 から 2000 (およそ) の間で変化します。ラベル数が 1000 程度を超えると、ラベルが含まれるフォームの表示に時間がかかります。
フォームを表示するのにかかる時間は、(場合によっては) 優れたアルゴリズムを作成する際に節約できる時間を完全に上回ります! フォームを短時間で簡単に表示できる効率的な方法を探しています。現在、1499 個のラベルを含むフォームを表示するのに 1 分 45 秒かかります。
現在、私はこのようにやっています:-

    foreach(string Elements in FileList)
    {
      Label LabelA = new Label() ; 
      // other code here to modify the appearence of label
      LabelA.Show() ;
    }
     MyForm.Show();
    // File List is the List of file names which are to be displayed.
    //MyForm is the name of the form in which labels are added at runtime.
4

3 に答える 3

0

少なくともいくつかのテクニックがあります。

  • それらすべてを現代的に見ることは技術的に不可能なので、解決策は単にそれらを分割することTabsです. したがって、それらをアプリケーション ロジックのグループに分割します。

  • 遅延スクロール。したがって、ユーザーがウィンドウをスクロールすると、ウィンドウ内のデータ (および対応するデータ フィールド) のみが変更されます。

アイデアを提供するだけですが、基本的には、UI で一度にすべてのコントロールが必要であるという単純な事実に注意を向けるためです。これらの解決策がうまくいかない場合は、制御を変更して、データの表現を変更します。

于 2013-10-29T07:57:53.433 に答える
0
  1. Asyn get result おそらくBackGroundWorker、結果を非同期的にクエリしてラベルを作成するために使用できます。この方法により、ユーザーエクスペリエンスが向上します。

  2. サスペンドしてから再開するラベルを追加するときに使用する必要がControl.SuspendLayout()ありますControl.ResumeLayout()

  3. 結果をページングする 別の方法で結果をページングできます。

于 2013-10-29T08:08:30.173 に答える