2016-11-10 18 views
0

자식 폼 인 frm1을 열고 그 안에 MdiForm1이라는 부모 폼이 있습니다. 이제는 frm1 내에서 다른 형식을 열어야합니다. frmX라고 부르면 여기에서 문제가 발생합니다. 이전에 mdichild 형식으로 선언하고 mdichild.show로 선언했으나 문제가 발생했습니다. 이 양식이 열리면 (이미 열려있는 frm1의 약 1/3을 덮음) 사용자가 frmX 외부를 클릭하면 간단히 사라집니다. 그래서 그것을 시도했다 .showDialog() 그러나 최고 수준이 아니므로 mdiChild 따라서 날 수 없습니다 .showdialog(). 여기에 .... 내 코드 ... 내가 .showDialog (에이 오류가Vb.net에서 자식 폼과 부모 폼이 일치하지 않습니다.

Private Sub cmd1_Click(sender As Object, e As EventArgs) Handles cmd1.Click 

    Dim NewMDIChild As New Frmx() 

    'Set the Parent Form of the Child window. 
    NewMDIChild.MdiParent = MDI1 

    'Display the new form 
    NewMDIChild.ShowDialog() 

    NewMDIChild.Top = 310 
    NewMDIChild.Left = 36 
    NewMDIChild.Width = 897 
End Sub 

는) 그리고 여기의 말씀의 최상위 양식으로 표시 할 수 없습니다 아니다

양식 모달 대화 상자. showDialog를 호출하기 전에 상위 폼에서 폼을 제거하십시오.

나는이 같은 frmX를 선언하려고 ....

dim frmX as New Form 
frmX.showDialog 

'specifying Top/Left/Width but that doesn't do anything, basically opens an empty form elsewhere on the screen. 

편집 : 그것은 조금 혼란 :/

이 내가 무슨 짓을 - 같은 오류가 나타납니다. frm1을 클릭하면 frmX가 사라지지 않도록 frmX를 모달로 OPEN하는 것으로 가정하는 버튼 클릭시 frm1에 있습니다. 내가 Frm1에는에 elsewher 클릭하면 그러나 --- frmX은 그것을 닫기를 클릭 할 때까지

Dim frmxName As New FrmX() 
    frmxName.MdiParent = Me.MdiParent 
    frmxName.ShowDialog() 
    frmxName.Top = 310 
    frmxName.Left = 36 
    frmxName.Width = 897 

내 목표는 개방 frmX을하는 것입니다 사라 올바른 위치에서 열립니다!

답변

1

내가 Form1에라는 MDI 부모에서 제어 폼의 MDI 부모

에 새로운 형태의 MDI 부모를 설정합니다. 이 양식은 진정한 재산 IsMdiContainer =이있다

Public Class Form1 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
     Dim myFrmX As New frmX 
     myFrmX.MdiParent = Me 
     myFrmX.Show() 
    End Sub 

End Class 

그리고 버튼을

아래의 기본 폼의 MDI 아이들로 표시됩니다 새로운 양식을 작성을 클릭

Public Class frmX 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim f As New Form 
     f.MdiParent = Me.MdiParent 
     f.Text = "frmY" 
     f.Show() 
    End Sub 

End Class 

에 버튼 frmX에

그냥 대화 창을 원하는 경우

enter image description here

또는, MDI 사업을 포기, 그냥 대화

보여
Public Class frmX 

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
     Dim f As New Form 
     f.Text = "frmY" 
     f.ShowDialog() 
    End Sub 

End Class 

이제는 frmY가 닫힐 때까지 포커스가 있습니다.

enter image description here

+0

내가/상단 왼쪽도 – BobSki

+0

등 지정의 관점에서 코드의 나머지 부분과 무엇을해야합니까,이 button_click 내 Frm1에는에 - 그래서 frmX로드 이벤트에서이 코드를 포함합니까? – BobSki

+1

예제에서 클래스에 다른 이름을 사용 했으므로 다소 혼란 스럽습니다. 원칙은 MDI 자식 frmX가있는 경우 새 폼 frmY를 만들고이 폼의 MDI 부모를 frmX의 부모로 설정할 수 있다는 것입니다.귀하의 의견에있는 질문은 주제를 벗어난 것 같습니다 – djv