Form_Load中にUnload me

解決


アサシ  2003-03-04 09:38:48  No: 106159  IP: [192.*.*.*]

Form_Loadイベントの中でUnload me として、Formを閉じたいのですがやり方がわかりません。
どなたかお願いします。

それとForm1.Visible = False の状態でForm_LoadするとLoadイベントを抜けた後にFormが表示されてしまいます。。。表示しない方法ありますか??

編集 削除
とろ  2003-03-04 10:24:13  No: 106160  IP: [192.*.*.*]

> 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 ですか?

編集 削除
nanashi  2003-03-04 11:02:30  No: 106161  IP: [192.*.*.*]

他のモジュールからLoad Form1とした場合、
Form1のForm_Loadイベント内でUnload Meすると呼び出し側にエラーが起こります。
というか、そもそもなんでそんなことをする必要があるのか私には理解できませんが…。

それとVisibleの状態にかかわらず、Loadしただけではフォームは表示されません。
どこかでShowメソッドを投げてませんか?

編集 削除
アサシ  2003-03-04 11:21:23  No: 106162  IP: [192.*.*.*]

中断処理を入れたいのです。
Form_Load中に処理を走らせ、中断フラグを拾って閉じるという処理です。
Formはモーダルで表示しています。あ、これですか?

流れ的には
Form1.show(1)
    ↓
    Form_Loadイベント
    ↓
    IF  中断Flg = True  : Unload Me

こんな感じです。Form_Load中に時間のかかる処理が入ってます。

編集 削除
nanashi  2003-03-04 16:07:26  No: 106163  IP: [192.*.*.*]

何をしたいのであれ、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になっていてもフォームは表示されます。

編集 削除
アサシ  2003-03-05 10:36:52  No: 106164  IP: [192.*.*.*]

ありがとうございます!!無事解決しました!!本当にありがとうございます!!

編集 削除