none
フォーム起動時の非表示 RRS feed

  • 質問

  • フォームを呼び元のホームから起動しています。重い読み込みを行っているため、画面を非表示にして、最後に表示しようと思って、Newの最初にMe.Visible = False とフォームのロードの最初にMe.Visible = False を書いて、その後にフォームロードの中で読み込み処理を行い、フォームロードの最後にMe.Visible = Trueとしてますが、

    部分的に画面が描画され(半透明みたいな一部後ろの画面が透けている)重い処理が終わるまでその状態で、処理終了後、ちゃんと表示されます。

    NewでMe.Visible = False しているのにかかわらず、フォームロードに来た瞬間Me.Visible をウォッチすると、Trueになっています。これが原因かと思いますが、

    完全にホームの起動処理を終わるまで、非表示にする方法はどうしたらいいでしょうか?

     

    2010年6月10日 1:08

回答

  • こんにちは。

    FormのOpacityプロパティを変えることで、
    見えなくなりませんか?
    完了次第、透明度を変更して可視化してはどうでしょうか?

    確認はしてませんが、もしよろしければお試しください。

    • 回答としてマーク TAKAPI 2010年6月10日 4:25
    2010年6月10日 3:01

すべての返信

  • こんにちは。

    FormのOpacityプロパティを変えることで、
    見えなくなりませんか?
    完了次第、透明度を変更して可視化してはどうでしょうか?

    確認はしてませんが、もしよろしければお試しください。

    • 回答としてマーク TAKAPI 2010年6月10日 4:25
    2010年6月10日 3:01
  • 見事にうまくいきました。感激です。ありがとうございました。
    2010年6月10日 4:25
  • 起動が重い画面の場合は、以下の方法も有効です。

    画面を非表示にして重い処理が終わった後に画面を表示するのではなく、

    画面は表示し、重い処理の進捗バーを表示し、重い処理が終わったら進捗バーを消す。

     

    メリットとしては、画面を使う方にとって、重い処理であっても視覚的にその進捗が見えるので

    ストレスが軽減することです。

     

    方法としては、「BackgroundWorker」を利用します。

    以下が参考になるかと思います。

    http://www.atmarkit.co.jp/fdotnet/dotnettips/436bgworker/bgworker.html

    2010年6月22日 2:05
  • 完全にホームの起動処理を終わるまで、非表示にする方法はどうしたらいいでしょうか?

    Showメソッドで画面を表示する前に、重い処理を事前にやっておけばよいのでは?コードのイメージは以下のような感じです。

    Dim f As FormX
    f = New FormX()
    f.準備を行うメソッド()
    f.Show()
    2010年6月22日 14:01