- PR -

MDI子フォームの最大化表示

1
投稿者投稿内容
いりえもん
会議室デビュー日: 2006/05/18
投稿数: 2
投稿日時: 2006-05-18 15:19
お世話になっております。

現在VS2005(VB)にてMDIウィンドウのアプリケーションを開発しています。

子フォームを最大化で開きたいのですが、うまくいきません。
以下の2パターンを試しました。

@
子フォームのLoad時に、

Me.WindowState = FormWindowState.Maximized

とすると、一度Normalサイズにて表示された後、最大化されるような動きをし、
画面がチラついてしまいます。

A
親フォームで子フォームを呼出す際、

childForm.WindowState = FormWindowState.Maximized
childForm.Show()

とすると、Normalサイズで表示されます。
(画面の右上のMaximizeBoxは「元に戻す」ボタンになっているので、自らは最大化されているつもりのよう・・・)

きれいに最大化表示ができる方法を知っておられる方がいましたら、
教えて頂けないでしょうか?

なせ
常連さん
会議室デビュー日: 2006/01/06
投稿数: 41
お住まい・勤務地: おおさか
投稿日時: 2006-05-18 16:57
解決策というか
こうすればできるかも?という案しか提示できませんが

親フォームから子フォームを呼び出す前に、
子フォーム側の関数を呼び出し、
子フォーム側の関数で
Me.WindowState = FormWindowState.Maximized
を使ってみるのはいかがでしょうか?

親フォームクラス
引用:


childFrm.testclass()
childFrm.show()




子フォームクラス
引用:


public void testclass(){
Me.WindowState = FormWindowState.Maximized
}




というような感じ。

#うちにはVS2005が無いので試せないのが心苦しい(^^;

#たぶんにVS2005のバグなんだろうなぁ。。。

[ メッセージ編集済み 編集者: なせ 編集日時 2006-05-18 16:59 ]
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2006-05-18 17:00
コード:
Imports System.Windows.Forms
Public Class Parent
    Inherits Form

    Public Shared Sub Main()
        Application.Run(New Parent())
    End Sub

    Private WithEvents showMenu As New MenuItem("&ShowChild")
    Public Sub New()
        Me.IsMdiContainer = True
        Me.Menu = New MainMenu()
        Me.Menu.MenuItems.Add(showMenu)
    End Sub
    Private Sub showMenu_Click(sender As Object, e As EventArgs) _
          Handles showMenu.Click
        Dim child As New Form()
        child.WindowState = FormWindowState.Maximized
        child.MdiParent = Me
        child.Show()
    End Sub
End Class


と最低限のコードでは、普通に最大化されて表示されているように見えますが……。
いりえもん
会議室デビュー日: 2006/05/18
投稿数: 2
投稿日時: 2006-05-18 18:03
なせ様
Hongliang様

お返事ありがとうございます。

早速、検証してみました。

<<なせ様の方法>>
期待した結果は得られませんでした。

私のAの方法の結果と同等の結果となりました。

> A
> 親フォームで子フォームを呼出す際、
>
> childForm.WindowState = FormWindowState.Maximized
> childForm.Show()
>
> とすると、Normalサイズで表示されます。
> (画面の右上のMaximizeBoxは「元に戻す」ボタンになっているので、
> 自らは最大化されているつもりのよう・・・)


<<Hongliang様の方法>>
新規にプロジェクトを作成し、MDI親フォームを頂いたコードの通り作成すると、
ご指摘の通り、普通に最大化されました。

しかし、プロジェクトに子フォームとなるForm(例えば、Form2) を追加し、
そのFormを使用すると、

Dim child As New Form2
child.WindowState = FormWindowState.Maximized
child.MdiParent = Me
child.Show()

やはりAの結果となります。


納品はまだ先なので、これからもいろいろと調べてみます。
また何か方法がありましたら、よろしくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-05-18 22:51
引用:

いりえもんさんの書き込み (2006-05-18 18:03) より:

child.WindowState = FormWindowState.Maximized


タイミングの問題だとは思うので、色んなパターンで検証して切り分けてください。
でも、MDI フォームに関する不具合は多いんですよね...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
1

スキルアップ/キャリアアップ(JOB@IT)