別フォームを表示させるには?

解決


Study  2006-12-14 01:37:06  No: 134582

コードだけが先に送ってしまいました。削除願います。
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行続けて記述しております。

もし、よろしければ
  ①対策方法
  ②なぜ上述のような現象になるか?原因を教えていただきたく
よろしくお願いいたします。


我龍院  2006-12-14 18:43:58  No: 134583

普通はそのようにはならない気がするが、
>InternetExplorer起動
をスキップすると正常に動作するのですか?


Study  2006-12-14 20:12:15  No: 134584

>普通はそのようにはならない気がするが、
私もそう思うのですが…
バグ? <-それが知りたい理由でもあります。

>>InternetExplorer起動
>をスキップすると正常に動作するのですか?
特に関係ないように思います。
InternetExplorer起動の前でShowDialog()を実行しても同現象になります。


我龍院  2006-12-14 20:39:04  No: 134585

そのような場合は、最小コードで試してみて、
それでも同じ現象なら、そのコードを提示されれば
話が早いかな。


大吉末吉  2006-12-14 20:47:02  No: 134586

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からインストールしなおしてみるとか・・・


Study  2006-12-15 18:06:01  No: 134587

大吉末吉さん、ご連絡ありがとうございます。

さて、本件に関して

>Form4の呼び出し方をForm2/Form3と同じにしたら、どうなりますか?
>逆に、Form2/Form3の呼び出し方をForm4と同じにしたら、どうなりますか?

>または、新規プロジェクトを作成しても、同じになりますか?
>Form4でしか、現象が発生しないなら、Form4に問題があるのかもしれませんね。

これは、投稿する前にやってみたのですが現象に変化ありませんでした。
また、新規にForm5を作ってみたのですが、これも変化ありませんでした。

>どういうフォーム(コード)なんでしょう?
>#Form2/Form3との違いは?
From4は、ただのメッセージフォームですので
アイコン、ラベル、ボタン2つを配置しているだけです。
特に変わったことは、していないつもりですが…

>または、逆にForm2/Form3でも発生するなら、PC環境がおかしい(VBのインストールに失敗しているとか、OSのDLLが破損しているとか・・・)可能性も。
Form2/Form3で発生したらややこしくなるので試せません。

>OSからインストールしなおしてみるとか・・・
さすがに今の環境では、簡単には、できません。
申し訳ありません。


大吉末吉  2006-12-15 19:21:11  No: 134588

>または、新規プロジェクトを作成しても、同じになりますか?

こちらは、試されましたか?

新規プロジェクトで、「同じ構造のフォームとコードを作ってみる(コピー&ペースではなく、手で打ち直す)」をやっても再現しますか?

> また、新規にForm5を作ってみたのですが、これも変化ありませんでした。

これは、「fctABC()から新規のフォームを呼び出しても現象が発生する」と言う意味でしょうか?

では、「fctABC()」自体が、怪しくないでしょうか?
「fctABC()」で何をやっています?
> InternetExplorer起動
とありますが、コレは?

後、コードを1行ずつコメントにしていったら、現象は変わりますか?

> From4は、ただのメッセージフォームですので
> 特に変わったことは、していないつもりですが…

念の為、
> newform4.ShowDialog()  <---(※1)

ここで、一旦実行停止してから、ステップ実行してみて、
変なコードが実行されないか?想定外のイベントが発生しないか?
確認してみてはどうでしょう?


大吉末吉  2006-12-15 19:21:11  No: 134589

>または、新規プロジェクトを作成しても、同じになりますか?

こちらは、試されましたか?

新規プロジェクトで、「同じ構造のフォームとコードを作ってみる(コピー&ペースではなく、手で打ち直す)」をやっても再現しますか?

> また、新規にForm5を作ってみたのですが、これも変化ありませんでした。

これは、「fctABC()から新規のフォームを呼び出しても現象が発生する」と言う意味でしょうか?

では、「fctABC()」自体が、怪しくないでしょうか?
「fctABC()」で何をやっています?
> InternetExplorer起動
とありますが、コレは?

後、コードを1行ずつコメントにしていったら、現象は変わりますか?

> From4は、ただのメッセージフォームですので
> 特に変わったことは、していないつもりですが…

念の為、
> newform4.ShowDialog()  <---(※1)

ここで、一旦実行停止してから、ステップ実行してみて、
変なコードが実行されないか?想定外のイベントが発生しないか?
確認してみてはどうでしょう?


大吉末吉  2006-12-15 19:22:39  No: 134590

ごめんなさい。

うっかり、「送信」ボタンをダブルクリックしてしまいました。
2つの投稿の中身は同じです。


Study  2006-12-22 02:48:13  No: 134591

ご回答くださった皆さんへ
  色々ご助言頂きありがとうございました。
  当方でご助言を参考にいろいろと解析しましたが、
  理由が分かりませんが、下記コードをコメントアウトすると
  想定していた動作をさせることができるようになりました。
  
  皆様、ありがとうございました。

      With Me
            .TopMost = True
            .Text = "確認 - *****"
            .StartPosition = FormStartPosition.CenterScreen
            .FormBorderStyle = Windows.Forms.FormBorderStyle.FixedToolWindow
->        .ShowInTaskbar = False  <------ このコード
            .MaximizeBox = False
            .MinimizeBox = False
        End With


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




  


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