Sub Main()でのフォームの表示方法?

解決


LostWay  2003-11-14 08:23:15  No: 80433

お世話に成ります。(VB.net です)
Sub Main()でフォームを表示させると、その後の処理が出来ないのですがどうすれば良いのでしょう?  表示したフォームを消すと次のステップに移るのですがその時にはすでにフォームが有りません。

Module Module1
 Public myForm As New Form1
 Sub Main()
  'myForm.Show()
  Application.Run(myForm)  'フォームが表示される
  AAA()  '<----ここに来ない。  なぜ??
 End Sub

 Public Sub AAA()
 End Sub

End Module

フォームを表示してから、次のステップに移れる表示方法はどうすれば良いのでしょう?  宜しくお願いします。


VBひよっこ  2003-11-14 22:37:37  No: 80434

Form1.Show vbModeless
Form1.Show vbModal
それぞれで試してみてください。違いがわかると思います。


LostWay  2003-11-15 06:54:41  No: 80435

アドバイス有難う御座います。
Form1.Show vbModeless --->frm.Show()
Form1.Show vbModal ------>frm.ShowDialog()
VB.netでは上記の様に成るようですが、以下のように上手く作動しません。
何かとんでもない間違いをしているのでしょうか?

Imports System
Imports System.Drawing
Imports System.Windows.Forms

Module Module1
    Dim frm As New Form1
    Sub main()

        '***<1>. frm.Show()でやってみる**********
        'frm.Show()
        '一瞬フォームが表示されて終了する

        '***<2>. frm.ShowDialog()****************
        frm.ShowDialog()
        'フォームは表示されるが"Test"は表示されない
        '<3>に行かない
        'フォームを消すと終了する

        '***<3>. フォームを表示した後の作業******
        frm.Text = "Test"
    End Sub

End Module

宜しくお願いします。


VBひよっこ  2003-11-16 05:26:09  No: 80436

ごめんなさい。やっぱり"ひよっこ"でした。
VB.netはわかりません。
失礼しました。


LostWay  2003-11-16 08:33:59  No: 80437

有難う御座いました。
どうも  Sub main()  で開始すると  End Sub  でプログラムが終了するのではないかと?(これも間違い?)
また宜しくお願いします。


いさな  2003-11-18 03:12:21  No: 80438

多分、frm.ShowDialog()
を記述した時点で、frmに制御が移っているので、
frm.Text = "Test"
はfrmの方の初期処理とかで対応しなければ、反映されないのではないでしょうか?
多分、フォームを消した後に、
Sub Main()
に戻ってきて、
frm.Text = "Test"
をやってはいませんか?


LostWay  2003-11-20 21:48:12  No: 80439

いさな  さんアドバイス有難う御座います。
仰る通りです、フォームが消えないと次のステップに行かないのですが、フォームを表示したまま次のステップに行くには何か方法が無いものかと質問させて頂きました。frm.Text = "Test"  は実際は他のルーチン呼び出しとなります。


となかい  2003-11-21 01:21:46  No: 80440

フォームを表示させた後に実行したい処理を呼び出したフォームのLOADイベントに記述するんじゃだめですか?
どうしてもそれはSUB  MAIN()  に書いておかなくちゃいけない処理でしょうか。


いさな  2003-11-21 02:18:51  No: 80441

もし、呼んだフォームでの記述が可能であれば、ここらへんが参考になるのではないでしょうか?

http://madia.world.coocan.jp/vb/vb_bbs2/200305_03050006.html


LostWay  2003-11-22 04:12:44  No: 80442

有難う御座います。
したかった事は、プログラム本体はフォームを必要とせずsub main でスタートさせる、フォームは情報の表示と設定にのみ必要・・・・、との目的です。
モードレスで表示し、後必要なプログラム本体をスタートさせれば案外うまく行くかも知れませんね、アドバイスを参考にして色々やってみます。sub main でスタートさせるとグルグル回って最後の最後に又sub mainに戻ってくるようですね。
また宜しくお願いします。


ねろ  2003-11-23 01:58:26  No: 80443

VB.NETの場合Main()から呼び出されたFormは他の関数と同じに
Main()に戻ってきたときは廃棄されるようです。
従ってSub Main()でスタートするプロぐむは通常は
Formの無いプログラムに使用されるようです。
Formが必要なプログラムはFormから起動する。
特にこれで問題は生じないと思いますが。


LostWay  2003-11-24 02:17:59  No: 80444

納得です。
有難う御座いました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加