• ベストアンサー

MDIでフォームがアクティブにならない

VB2008です。 MDIフォーム中にForm1とForm2があります。 Form1がアクティブです。 Form2をクリックしてもアクティブになりません。ただしタイトルバーをクリックするとアクティブになります。 これは言語の仕様でしょうか。市販のアプリケーションでは、タイトルバー以外の場所をクリックしてもアクティブになるものがほとんどですが、VB2008ではどのようにすれば実現できるのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

どのようなコードをお書きなのでしょう # 当方の環境はVB2005ですが以下の手順ではどこをクリックしても # 切り替え可能です 単純にIsMdiContainer=True にした MainForm プロジェクトに追加した Form1,Form2 があると仮定して MainFormのクラス変数として dim fm1 as Form1, fm2 as Form2 を定義 Loadイベントで fm1 = New Form1() fm2 = New Form2() fm1.MdiParent = Me fm2.MdiParent = Me fm1.Show() fm2.Show() を記述しただけのプロジェクトですと Form1,Form2どこをクリックしてもアクティブフォームは切り替わりますよ 他人が検証できる 最低の手順の公開か、必要最小限のコードを提示してみましょう

xiaolong_goo
質問者

補足

お返事ありがとうございます。 わかりにくい質問でごめんなさい。 今は、3つのフォームに以下のコードがあります。 MDIフォーム: Private Sub MDIParent1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Form1.Show() Form2.Show() End Sub フォーム1: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.MdiParent = MDIParent1 End Sub フォーム2: Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.MdiParent = MDIParent1 End Sub ご回答いただいた方法ではできました。 インスタンスを作成しない場合は、やはり無理なのでしょうか。

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

インスタンスを作成してお使いになることをお勧めします MDIParentのLoadイベントで Form1.MdiParent = Me Form2.MdiParent = Me Form1.Show() Form2.Show() といった具合にしてやれば切り替えは可能になります … お勧めはしませんが