フォームをモードレスで開いた後に子のフォームを親のフォームのボタンで閉じるために
Dim 変数 As New 変数()
変数.show()
で開くのだから変数.close()に変えてみたのですが出来ませんでした。
「開いた子のウィンドウのフォームの名前.visible = false」でも
出来ません。
変数の宣言を上の方に持っていきPublic 変数 As New 変数()でも出来ません。
モードレス、モーダル以外の方法で開いて閉じるとか他の方法で親フォームからの
子フォームを開いたり閉じたりするんでしょうか?
どこかにプロジェクトにあるフォームを書いておく必要があるんじゃないかとも考えているのですがいかがなものなのでしょうか?
どのようなコードを書かれているのか解らないのですが・・・
例えばこんな感じで、出来ますが・・・
例 Form1 のコード
Private objForm As Form2
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.Close()
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
objForm.Close()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
objForm = New Form2()
objForm.Show()
End Sub
Form2 のコード(念の為に閉じれるように)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Me.Close()
End Sub
このコードを実行して、Form1 のButton1をクリックすると、Form2が
閉じますが、これでは違いますか?
以上。
出来ませんでした。
Form1_Loadの所のshowでデバックして起動したとき二つのフォームが出ると思うんですが
フォーム1しかでません。最初のPrivate objForm As New Form2は、windows
フォームデザイナで生成されたコードの下(各ボタン、フォームのプロージャの上)に書けばいいんですよね?
> フォームデザイナで生成されたコードの下
> (各ボタン、フォームのプロージャの上)に書けばいいんですよね?
はい、その通りです。
Win2000 Pro SP3・WinXP SP1 の両マシンで実行しましたが、
上記のコードで問題なく動作しております。
※ どなたか他の方で、上記のコードでフォームが1ツしか
出ない方、居られますか?
こちらのマシン環境のせいなのかどうか・・・
手元のマシンでは動いてしまっておりますので、これ
以上は解りません。
以上。
試してはいないけど、普通にこれで動くハズです。
ctさんが動かないって言ってるソースを提示してもらえれば、なんかアドバイス出来るかも。
親フォーム、子フォームと質問に書きましたが、ただフォームとモードレスで開い
たフォームとしておくべきだったようです。親フォーム、子フォームの意味がよく
分かっていませんでした。
とりあえず解決しました。
ツイート | ![]() |