我有一个名为MdiForm1的父表单,我打开了frm1,这是一个子表单。所以现在一切都很棒 - 现在我需要在frm1中打开另一个表单 - 让我们调用frmX,这就是我的问题出现的地方 - 我之前已经宣布它为mdichild形式,并且做了mdichild.show - 但问题出现了,因为当这个表单打开时(它覆盖了大约1/3的frm1 - 已经打开)并且用户点击了frmX之外 - 它只是消失了。所以我尝试.showDialog()然而我无法做到这一点因为它不是顶级并且是mdiChild因此不会让我.showdialog()。这是我的代码......
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()上遇到此错误,这就是它所说的....
不是顶级表单的表单不能显示为模式 对话框。在致电之前从任何父表单中删除表单 的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,这样用户点击frm1就不会使frmX消失。它在正确的位置打开,但是当我点击另一个frm1 --- frmX消失
Dim frmxName As New FrmX()
frmxName.MdiParent = Me.MdiParent
frmxName.ShowDialog()
frmxName.Top = 310
frmxName.Left = 36
frmxName.Width = 897
我的目标是让frmX打开,直到他们点击它为止!
答案 0 :(得分:1)
将新表单的MDI父级设置为控制表单的MDI父级
在MDI父级中,我调用了Form1。此表单具有属性IsMdiContainer = True
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
在frmX上有一个按钮
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
单击该按钮可创建新表单,这些表单将显示为
下方主表单的MDI子项或者如果您只想要一个对话窗口,放弃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一直关注,直到它关闭。