コードだけが先に送ってしまいました。削除願います。
Public Class Form1
Public newform4 As Form4 = New Form4()
Private Sub AAAToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AAAToolStripMenuItem.Click
Dim newform As Form2 = New Form2()
newform.ShowDialog()
newform.Dispose()
newform = Nothing
End Sub
Private Sub BBBToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BBBToolStripMenuItem.Click
Dim newform As Form3 = New Form3()
newform.ShowDialog()
newform.Dispose()
newform = Nothing
End Sub
Private Sub xxxToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles xxxToolStripMenuItem.Click
Call fctABC()
End Sub
Private Sub fctABC()
InternetExplorer起動
newform4.ShowDialog() <---(※1)
newform4.ShowDialog() <---(※2)
End Sub
End Class
というようにForm4を閉じない限りForm1のフォームの操作が出来ないようにしようとしております。
Form2, Form3もShowDialogで動かしており問題なく動作(***_Click直下にShowDialog)しておりますが、
Form4は、fctABC()を呼び出して使用しております。fctABC()はForm1内で複数呼び出しております。
教えて欲しい内容は、上記のようにShowDialog()を2行続けて記載しないと動作が停止しません。
※1でForm1は動作を停止してForm4へ移行して欲しいんですが、
どうやら※1でForm4のForm4_Loadが動作した後勝手にform4が閉じ、※2に移行し、
※2でForm4のForm4_Loadが動作した後で初めて停止します。
意図しているのは、※1で停止させようとしております。
上述は、※1で停止しないため無理やりShowDialog()を2行続けて記述しております。
もし、よろしければ
①対策方法
②なぜ上述のような現象になるか?原因を教えていただきたく
よろしくお願いいたします。
普通はそのようにはならない気がするが、
>InternetExplorer起動
をスキップすると正常に動作するのですか?
>普通はそのようにはならない気がするが、
私もそう思うのですが…
バグ? <-それが知りたい理由でもあります。
>>InternetExplorer起動
>をスキップすると正常に動作するのですか?
特に関係ないように思います。
InternetExplorer起動の前でShowDialog()を実行しても同現象になります。
そのような場合は、最小コードで試してみて、
それでも同じ現象なら、そのコードを提示されれば
話が早いかな。
Study さん こんにちは。
> バグ? <-それが知りたい理由でもあります。
もし、こういう基本的な箇所が、バグなら、とっくに大騒ぎになっていると思いますが・・・
> Form2, Form3もShowDialogで動かしており問題なく動作(***_Click直下にShowDialog)しておりますが、
> Form4は、fctABC()を呼び出して使用しております。fctABC()はForm1内で複数呼び出しております。
Form4の呼び出し方をForm2/Form3と同じにしたら、どうなりますか?
逆に、Form2/Form3の呼び出し方をForm4と同じにしたら、どうなりますか?
または、新規プロジェクトを作成しても、同じになりますか?
Form4でしか、現象が発生しないなら、Form4に問題があるのかもしれませんね。
どういうフォーム(コード)なんでしょう?
#Form2/Form3との違いは?
または、逆にForm2/Form3でも発生するなら、PC環境がおかしい(VBのインストールに失敗しているとか、OSのDLLが破損しているとか・・・)可能性も。
OSからインストールしなおしてみるとか・・・
大吉末吉さん、ご連絡ありがとうございます。
さて、本件に関して
>Form4の呼び出し方をForm2/Form3と同じにしたら、どうなりますか?
>逆に、Form2/Form3の呼び出し方をForm4と同じにしたら、どうなりますか?
>または、新規プロジェクトを作成しても、同じになりますか?
>Form4でしか、現象が発生しないなら、Form4に問題があるのかもしれませんね。
これは、投稿する前にやってみたのですが現象に変化ありませんでした。
また、新規にForm5を作ってみたのですが、これも変化ありませんでした。
>どういうフォーム(コード)なんでしょう?
>#Form2/Form3との違いは?
From4は、ただのメッセージフォームですので
アイコン、ラベル、ボタン2つを配置しているだけです。
特に変わったことは、していないつもりですが…
>または、逆にForm2/Form3でも発生するなら、PC環境がおかしい(VBのインストールに失敗しているとか、OSのDLLが破損しているとか・・・)可能性も。
Form2/Form3で発生したらややこしくなるので試せません。
>OSからインストールしなおしてみるとか・・・
さすがに今の環境では、簡単には、できません。
申し訳ありません。
>または、新規プロジェクトを作成しても、同じになりますか?
こちらは、試されましたか?
新規プロジェクトで、「同じ構造のフォームとコードを作ってみる(コピー&ペースではなく、手で打ち直す)」をやっても再現しますか?
> また、新規にForm5を作ってみたのですが、これも変化ありませんでした。
これは、「fctABC()から新規のフォームを呼び出しても現象が発生する」と言う意味でしょうか?
では、「fctABC()」自体が、怪しくないでしょうか?
「fctABC()」で何をやっています?
> InternetExplorer起動
とありますが、コレは?
後、コードを1行ずつコメントにしていったら、現象は変わりますか?
> From4は、ただのメッセージフォームですので
> 特に変わったことは、していないつもりですが…
念の為、
> newform4.ShowDialog() <---(※1)
ここで、一旦実行停止してから、ステップ実行してみて、
変なコードが実行されないか?想定外のイベントが発生しないか?
確認してみてはどうでしょう?
>または、新規プロジェクトを作成しても、同じになりますか?
こちらは、試されましたか?
新規プロジェクトで、「同じ構造のフォームとコードを作ってみる(コピー&ペースではなく、手で打ち直す)」をやっても再現しますか?
> また、新規にForm5を作ってみたのですが、これも変化ありませんでした。
これは、「fctABC()から新規のフォームを呼び出しても現象が発生する」と言う意味でしょうか?
では、「fctABC()」自体が、怪しくないでしょうか?
「fctABC()」で何をやっています?
> InternetExplorer起動
とありますが、コレは?
後、コードを1行ずつコメントにしていったら、現象は変わりますか?
> From4は、ただのメッセージフォームですので
> 特に変わったことは、していないつもりですが…
念の為、
> newform4.ShowDialog() <---(※1)
ここで、一旦実行停止してから、ステップ実行してみて、
変なコードが実行されないか?想定外のイベントが発生しないか?
確認してみてはどうでしょう?
ごめんなさい。
うっかり、「送信」ボタンをダブルクリックしてしまいました。
2つの投稿の中身は同じです。
ご回答くださった皆さんへ
色々ご助言頂きありがとうございました。
当方でご助言を参考にいろいろと解析しましたが、
理由が分かりませんが、下記コードをコメントアウトすると
想定していた動作をさせることができるようになりました。
皆様、ありがとうございました。
With Me
.TopMost = True
.Text = "確認 - *****"
.StartPosition = FormStartPosition.CenterScreen
.FormBorderStyle = Windows.Forms.FormBorderStyle.FixedToolWindow
-> .ShowInTaskbar = False <------ このコード
.MaximizeBox = False
.MinimizeBox = False
End With
ツイート | ![]() |