注册 登录
编程论坛 VB.NET论坛

关于父窗体与子窗体的问题?

binghe6610 发布于 2009-11-09 01:05, 2119 次点击
本人初次接触父窗体,
有个很简单的问题请教各位
我把一个form1窗体的IsMdiContainer属性设置成True也就父窗体
然后在form1窗体中添加控件
之后在form1窗体中的按钮单击事件中添加如下代码
form2.MdiParent=me
form2.show()

结果form2在form1父窗体控件的下面被挡住了,不能在最前面显示?
我把form1窗体中的控件设置成底层,还是能挡住form2
我不明白了,难道说父窗体中就不能放置任何控件了?
只要放了控件就把子窗体挡在控件的后面
请给点拨一下
17 回复
#2
binghe66102009-11-09 09:41
有人回答吗
#3
sywzs2009-11-09 10:56
在form1窗体的按钮单击事件添加如下代码
Dim ChildFrm As Form
ChildFrm = New form2
ChildFrm.MdiParent = Me
ChildFrm.Show()
#4
binghe66102009-11-09 11:41
3楼的代码还是搞不定

不过还是谢谢回复
#5
binghe66102009-11-09 11:44
我只是在form1中添加了PictureBox1控件,子窗体form2.show()后还在PictureBox1控件的后面
#6
erglpr2009-11-09 16:48
form2.show()这个表达式好像不对
form2.show
#7
binghe66102009-11-09 16:54
form2.show()这个表达式是对的
#8
binghe66102009-11-09 23:57
期待高手给解答一下
#9
sywzs2009-11-10 07:17
form1窗体中的按钮单击事件添加代码
窗体控件.Hide()

form1窗体中的 GotFocus 事件代码
窗体控件.Show()


[ 本帖最后由 sywzs 于 2009-11-10 07:19 编辑 ]
#10
binghe66102009-11-15 11:31
9楼也不是我想要的结果,form1窗体上的控件我不想隐藏。
谢谢回复
#11
binghe66102009-11-19 23:34
没有人能解决这个问题吗
#12
sywzs2009-11-22 04:18
既然不想看到,隐藏一下又何妨?
#13
不说也罢2009-11-22 17:16
以下是引用binghe6610在2009-11-15 11:31:01的发言:

9楼也不是我想要的结果,form1窗体上的控件我不想隐藏。
谢谢回复


'咱们能不能换个思路呀??下面的例子,FORM1 的IsMdiContainer为真或为假都没有关系
程序代码:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim f2 As New Form2
        f2.TopLevel = False
        Me.Controls.Add(f2)
        f2.Show()'到这里仍然会有楼主说的现象
        f2.BringToFront()'加上这一句,再看看吧,嘿嘿

 End Sub
#14
厚德载物七2009-11-25 18:18

是不是可以设焦点!!
#15
binghe66102009-12-17 23:45
谢谢大家的回复,其实我就是想要速达的导航窗体那样的效果。
#16
binghe66102009-12-17 23:57
13楼提供的方法,基本上是达到效果了,但是还不是很满意,这样当最大化form2时,好像form2不是form1的子窗体一样,也就是说form2挡住了form1的菜单
#17
adrian02010-02-03 16:11
3楼的代码应该可以的呀
#18
winy2010-07-25 23:52
想要实现那样的效果,只需在MDI主窗口添加一个Panel,并把Panel.Dock=Fill.
然后再按13楼类似的方法就可以实现,代码如下:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim f2 As New Form2
        f2.TopLevel = False
        Me.Panel.Controls.Add(f2) '这里原是 Me.Controls.Add(f2)
        f2.Show()'
        f2.BringToFront()'
End Sub
1