2012-04-17 4 views
0

私はC#コードでLinkLabelsの数を追加するWindowsフォームを持っています。 私が持っている問題は、フォームが表示されたときに、上から下へ順番に画面に表示されることです。しかし、私はそれが突然速く現れたい。私は何をすべきか? 私はこれを試してみましたが、助けてくれませんでした: 私はfalseを表示するように設定しました。フォームにすべてのラベルを記入します。その後、ショーと呼ばれる。フォームを上から下へ徐々に描画したくありません。一度にすべて表示するようにしたい

(私は別の形でのラベルのMouseEnterイベントに私のフォームを(新しい)およびshow()。)

編集:私はまたのDoubleBufferを試してみました。助けてくれなかった。 フォーム全体が遅れて表示されても構いません。一度にすべてを表示したいだけです。私の場合は少し遅延が避けられないからです。データがネットワークから取得されます。

ありがとうございます。

+1

'DoubleBuffered = true'を試しましたか? – Marco

答えて

4

推測として、DoubleBuffered = trueをフォームに設定してみてください。これは、画面上に描画する前に、フォーム全体をメモリバッファにレンダリングすることになっています。しかし、より良い解決策は、フォームが非常にゆっくりとレンダリングする原因を突き止めることです。フォームは、UIスレッドで多くのロジックが発生していない限り、通常は知覚できません。あなたのapplicaitonをプロファイリングする必要があり、そのためのいくつかの可能な理由があることができ

+0

なぜdownvote? –

+0

どのようなdownvote?私は何も見ませんでした。 – Tina

2

:(コントロールの量によって減少させることができるロード中

  • 集中的なデータ人口が可視化される必要があり、ロードするデータの量やビュー上

  • すぎてコントロールが(ただのTabControlの異なるTabPagesでそれらを整理します。もしそこにあまりにも多くのコントロールがあり、それらを避けるため、ない任意のユーザーは、それらすべてが現代的な必要になります原因)別のスレッドで実行されます。

  • 最後に、ローディングの最中と最後にSuspendLayout()/ ResumeLayout()です。

希望します。

+0

私の問題は、Load()ではなくコンストラクタでデータを取得したことになります。私はそれをコンストラクタからload()に移動し、あなたのアドバイスに従ってコントロールの数を減らしました。今はずっと良いです。迅速な助けをありがとう:)。 – Tina

+1

ボトルネックを特定するには、アプリケーションをプロファイルする必要があります。私はあなたが持っている問題を引き起こす可能性のある最も一般的な失敗のリストを提供します。無料のパフォーマンス[Eqated](http://www.eqatec.com/Profiler/)プロファイラを使用して測定できます。 – Tigran

+0

@seff:どういう意味ですか? – Tigran

0

アイデア:

おそらくFillPanelDockを設定し、FormPanelを追加し、PanelであなたのLinkLabel秒のすべてを置きます。

関連する問題