フォーム切り替え時の画面のちらつきをなくすには?

解決


Kawagoe  2004-07-27 13:31:32  No: 115110  IP: [192.*.*.*]

こんにちは、Kawagoeと申します。

Form1をオープン
    ↓
Form1のボタンをクリック
    ↓
Form2をオープン
    ↓
Form2のボタンをクリック
    ↓
Form2をクローズ
    ↓
Form3をオープン

上記のような処理を行っているのですが、Form2をクローズし、
Form3をオープンする際に、Form1がちらっと見えてしまいます。

あまり見栄えがよくないので、ディスプレイの再描画を一時的に
止めたいと考えているのですが、どのようなコードを記述すれば、
一時的に再描画を止めることが出来るのでしょうか。

ご教授の方、よろしくお願いします。

編集 削除
マグ  2004-07-27 19:23:58  No: 115111  IP: [192.*.*.*]

Form1をクローズしていますか?

>上記のような処理を行っているのですが、Form2をクローズし、
>Form3をオープンする際に、Form1がちらっと見えてしまいます。

っと書かれていますが・・・
私的にはForm3をオープンして、Form2をクローズするほうがいいと思います。

編集 削除
z  2004-07-28 07:53:34  No: 115112  IP: [192.*.*.*]

VB6ですが。

Form1のボタンをクリック
    ↓
Form1.Visible = False
    ↓
Form2をオープン
    ↓
以下略

とかはどうでしょうか?
適当なタイミングで.Visible = Trueとしてください。

編集 削除
Kawagoe  2004-07-28 15:29:50  No: 115113  IP: [192.*.*.*]

マグさん
zさん

ご教授ありがとうございます。

マグさん
Form1はメインメニューになりますので、システムの終了時のみにクローズしよ
うと考えています。

>私的にはForm3をオープンして、Form2をクローズするほうがいいと思います。
私も、最初はこの様にしようと考えていたのですが、Form3にも「Form2を開く」
というボタンがありまして、この手順を踏むと、このボタンの押下時に、2重立
ち上げになってしまいました。
そこで、先に閉じることにしたのですが。。。。システム的には、あまりよくな
いのでしょうか?
もし、よろしければ、アドバイスいただけると助かります。

zさん
お教えいただいた方法を試したところ、無事にメインメニューのちらつきを無く
すことが出来ました。
ありがとうございました。

お二人とも、ご助言いただき、ありがとうございましたm(_)m

編集 削除
nanashi  2004-07-28 16:38:08  No: 115114  IP: [192.*.*.*]

> 私も、最初はこの様にしようと考えていたのですが、
> Form3にも「Form2を開く」というボタンがありまして、この手順を踏むと、
> このボタンの押下時に、2重立ち上げになってしまいました。

ボタン押下時にForm2が開いているかどうかを調べればいいと思います。
Formsコレクションを見てください。

編集 削除
Kawagoe  2004-07-28 18:11:47  No: 115115  IP: [192.*.*.*]

nanashiさん

アドバイスありがとうございます。

Formsコレクションを参考にして、次のようにしたところ、2重立ち上げの
問題を解決することができました。

'========================================
'Form3オープン
'========================================
Private Sub Form_Load()
  Dim intI As Integer

  'Form2が開いたままだったら解放する
  For intI = 0 To Forms.Count - 1
    If Forms(intI).Name = "Form2" Then
      Unload Forms(intI)  '解放
      Exit For
    End If
  Next
End Sub

ありがとうございましたm(_)m

編集 削除