2016-10-28 1 views
0

メインフォームのOnLoadイベント(サーバーチェック、データ取得などと呼ばれる機能の遅いものを介して)で必要な予備タスクを実行すると、メインフォームはこれらの予備的な仕事。その結果、BLANK画面が数秒間表示され、何も起こっていないことが示されます。フォームのペイントが遅すぎる

各ステップでステータスメッセージをMainFormのテキストボックス(DoEventsが続きます)に提供しましたが、MainFormのペイントが遅いために実際に表示されます。しかし、私のコードは、私がまだそれらを見ることができなくても、コントロールとその値を認識しています。

私は結果的に途中でMe.Refeshに振りかけることを試みました。

フォームを先に/最初にペイントしてから、それらの関数を実行するよう提案されていますか?

答えて

1
以降のイベントにこれらの呼び出しの一部または全部を移動

  • OnActivateイベント

または、これらのものをロードスプラッシュ画面を作成

  • OnCurrent、その後、あなたのメインフォームを開きます。

    スプラッシュ画面を閉じるようにメインフォームを設定します。

    +0

    ありがとう@Gustav。 OnActivateは良いアプローチのようです。しかし、私はイベントが私のメインフォームで2回発射されるように見えます。これがなぜ起こったのだろうか? –

    +0

    これは、フォームが非アクティブ化され、再度アクティブ化される場合にのみ発生します。 – Gustav

    +0

    あなたは正しいです。私は、Deactivateフォームを見ることができますし、再度アクティブにしてください。私はこの質問をSOLVEDと呼び、フォームが非アクティブ(意図的ではない)である理由を判断するように移ります。 –