2

親 MDI ウィンドウに子フォームを配置するにはどうすればよいですか? 親のメニューから子フォームを呼び出して表示することはできますが、子は親の外にポップアップします-実際には親の中に入れたいです。私は C# と VB.Net ソリューションをチェックインしましたが、それらはすべてほとんど同じことを言っています。つまり、次のように LayoutMDI にアクセスしようとしています。

http://msdn.microsoft.com/en-us/library/x9fhk181.aspx

問題は、これにどこからアクセスするかです。MDI の親のコードにいると、Me.LayoutMdi認識されません。アプリケーションのどの部分にMe.LayoutMDIコードを配置しますか?

編集

結局、Me.LayoutMDIコードは親で機能しました。私はしばらく試していましたが、どこが間違っていたのかわかりません。

ただし、子は引き続き親からポップアップします。これがどのように起こるかのイメージです。奥の広いフォームが親で、グリッドビューと 2 つのボタンがあるフォームがポップアップした新しい子です。親内で「ドッキング」をポップアップさせたい。

ここに画像の説明を入力

4

8 に答える 8

2

MDIForm から MDI Child プロパティを設定しないでください

Chileform Load イベントで、以下のコードを指定します

    Dim l As Single = (MDIForm1.ClientSize.Width - Me.Width) / 2
    Dim t As Single = ((MDIForm1.ClientSize.Height - Me.Height) / 2) - 30
    Me.SetBounds(l, t, Me.Width, Me.Height)
    Me.MdiParent = MDIForm1

終わり

このコードを試してください

于 2012-12-11T11:11:05.573 に答える
1
   Private Sub FileMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) handles FileMenu.Click

    Form1.MdiParent = Me
    Form1.Dock = DockStyle.Fill
    Form1.Show()
End Sub
于 2012-11-26T11:02:08.450 に答える
1

mdi の親にボタンを追加し、このコードを追加して、mdi の子を mdi の親の中に設定してみてください。yourchildformname を MDI Child のフォーム名に変更し、これが機能するかどうかを確認します。

    Dim NewMDIChild As New yourchildformname()
    'Set the Parent Form of the Child window.
    NewMDIChild.MdiParent = Me
    'Display the new form.
    NewMDIChild.Show()
于 2013-02-20T19:09:03.963 に答える
0

解決策はこちらのページをご覧ください! https://msdn.microsoft.com/en-us/library/7aw8zc76(v=vs.110).aspx

Child親の中にフォームを実装することができました。

以下の例でForm2は、子フォームの名前に変更する必要があります。 NewMDIChild.MdiParent=me子フォームを開く (表示する) コントロールは親または であるため、 がメイン フォームMeです。

NewMDIChild.Show()子フォームを関連付けたので、子フォームですDim NewMDIChild As New Form2()

Protected Sub MDIChildNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click
   Dim NewMDIChild As New Form2()
   'Set the Parent Form of the Child window.
   NewMDIChild.MdiParent = Me
   'Display the new form.
   NewMDIChild.Show()
End Sub

シンプルで機能します。

于 2016-03-30T18:59:37.937 に答える
0

以下のコードを試してください。

1 - メニューの名前をサンプルのように変更します。メニュー項目は「Form7ToolStripMenuItem_Click」と呼ばれていました

2 - 基本フォームだけでなく、必ず MDIFORM に貼り付けてください。

次に、子フォームがまだ親フォームの外側に表示されているかどうかを教えてください

Private Sub Form7ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Form7ToolStripMenuItem.Click

    Dim NewForm As System.Windows.Forms.Form
    NewForm = New System.Windows.Forms.Form
    'USE THE NEXT LINE - to add an existing CUSTOM form you already have
    'NewForm = Form7                         
    NewForm.Width = 400
    NewForm.Height = 250
    NewForm.MdiParent = Me
    NewForm.Text = "CAPTION"
    NewForm.Show()
    DockChildForm(NewForm, "left")          'dock left
    'DockChildForm(NewForm, "right")         'dock right
    'DockChildForm(NewForm, "top")           'dock top
    'DockChildForm(NewForm, "bottom")        'doc bottom
    'DockChildForm(NewForm, "full")          'fill the client area (maximise the child INSIDE the parent)
    'DockChildForm(NewForm, "Anything-Else") 'center the form

End Sub

Private Sub DockChildForm(ByRef Form2Dock As Form, ByVal Position As String)

    Dim XYpoint As Point
    Select Case Position
        Case "left"
            Form2Dock.Dock = DockStyle.Left
        Case "top"
            Form2Dock.Dock = DockStyle.Top
        Case "right"
            Form2Dock.Dock = DockStyle.Right
        Case "bottom"
            Form2Dock.Dock = DockStyle.Bottom
        Case "full"
            Form2Dock.Dock = DockStyle.Fill
        Case Else
            XYpoint = New Point
            XYpoint.X = ((Me.ClientSize.Width - Form2Dock.Width) / 2)
            XYpoint.Y = ((Me.ClientSize.Height - Form2Dock.Height) / 2)
            Form2Dock.Location = XYpoint
    End Select
End Sub
于 2012-12-20T01:10:59.857 に答える
0

子フォームの StartPosition プロパティを Center Parent に設定してみてください。これは、フォームの [プロパティ] から選択できます。

于 2013-04-18T15:33:51.300 に答える