お世話に成ります。(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
フォームを表示してから、次のステップに移れる表示方法はどうすれば良いのでしょう? 宜しくお願いします。
Form1.Show vbModeless
Form1.Show vbModal
それぞれで試してみてください。違いがわかると思います。
アドバイス有難う御座います。
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.netはわかりません。
失礼しました。
有難う御座いました。
どうも Sub main() で開始すると End Sub でプログラムが終了するのではないかと?(これも間違い?)
また宜しくお願いします。
多分、frm.ShowDialog()
を記述した時点で、frmに制御が移っているので、
frm.Text = "Test"
はfrmの方の初期処理とかで対応しなければ、反映されないのではないでしょうか?
多分、フォームを消した後に、
Sub Main()
に戻ってきて、
frm.Text = "Test"
をやってはいませんか?
いさな さんアドバイス有難う御座います。
仰る通りです、フォームが消えないと次のステップに行かないのですが、フォームを表示したまま次のステップに行くには何か方法が無いものかと質問させて頂きました。frm.Text = "Test" は実際は他のルーチン呼び出しとなります。
フォームを表示させた後に実行したい処理を呼び出したフォームのLOADイベントに記述するんじゃだめですか?
どうしてもそれはSUB MAIN() に書いておかなくちゃいけない処理でしょうか。
もし、呼んだフォームでの記述が可能であれば、ここらへんが参考になるのではないでしょうか?
http://madia.world.coocan.jp/vb/vb_bbs2/200305_03050006.html
有難う御座います。
したかった事は、プログラム本体はフォームを必要とせずsub main でスタートさせる、フォームは情報の表示と設定にのみ必要・・・・、との目的です。
モードレスで表示し、後必要なプログラム本体をスタートさせれば案外うまく行くかも知れませんね、アドバイスを参考にして色々やってみます。sub main でスタートさせるとグルグル回って最後の最後に又sub mainに戻ってくるようですね。
また宜しくお願いします。
VB.NETの場合Main()から呼び出されたFormは他の関数と同じに
Main()に戻ってきたときは廃棄されるようです。
従ってSub Main()でスタートするプロぐむは通常は
Formの無いプログラムに使用されるようです。
Formが必要なプログラムはFormから起動する。
特にこれで問題は生じないと思いますが。
納得です。
有難う御座いました。
ツイート | ![]() |