Form_Loadイベントの中でUnload me として、Formを閉じたいのですがやり方がわかりません。
どなたかお願いします。
それとForm1.Visible = False の状態でForm_LoadするとLoadイベントを抜けた後にFormが表示されてしまいます。。。表示しない方法ありますか??
> Form_Loadイベントの中でUnload me として、Formを閉じたいのですがやり方がわかりません。
VB ならば、 Form_Load 内でも Unload ステートメントが使用できます。
# Access などの VBA の場合はエラーになりますが...
ただ、 Unload 後に、 Form のプロパティを設定や参照した場合には、
再度 Form_Load イベントが発生したりしてしまうので、注意が必要です。
> それとForm1.Visible = False の状態でForm_LoadするとLoadイベントを抜けた後に
> Formが表示されてしまいます。。。表示しない方法ありますか??
Private Sub Form_Load()
Form1.Visible = False
End Sub
このコードだけでも、 Form_Load 後に Form1 が表示されてしまいますか?
もしかして、 VBA ですか?
他のモジュールからLoad Form1とした場合、
Form1のForm_Loadイベント内でUnload Meすると呼び出し側にエラーが起こります。
というか、そもそもなんでそんなことをする必要があるのか私には理解できませんが…。
それとVisibleの状態にかかわらず、Loadしただけではフォームは表示されません。
どこかでShowメソッドを投げてませんか?
中断処理を入れたいのです。
Form_Load中に処理を走らせ、中断フラグを拾って閉じるという処理です。
Formはモーダルで表示しています。あ、これですか?
流れ的には
Form1.show(1)
↓
Form_Loadイベント
↓
IF 中断Flg = True : Unload Me
こんな感じです。Form_Load中に時間のかかる処理が入ってます。
何をしたいのであれ、Form_Loadイベント内でUnload Meをすることは出来ないと思うので、考え方を変えたほうが良いですね。
つまり、Form_Loadの中では単純にForm内の初期化処理のみ。
実際に時間のかかる処理はパブリック宣言したプロシージャを作ることです。
Load Form1
↓
Form_Loadイベント
↓
Form1.ShowData(パブリック宣言したプロシージャ)
↓
時間のかかる処理
If Flg = True Then
Unload Me
Else
Me.Show (vbModal)
End If
この例ではフォーム内でShowしているのでアンロード時には工夫が必要ですが。
場合によってはShowDataプロシージャに戻り値を与えてShowするか判断させても良いです。
> Form1.show(1)
これではForm1.VisibleがFalseになっていてもフォームは表示されます。
ありがとうございます!!無事解決しました!!本当にありがとうございます!!
ツイート | ![]() |