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

VB.NET Panel1中加载的窗体如何能随Panel1尺寸的变化而变化?

ZMGTCDY 发布于 2015-04-06 16:49, 4445 次点击
在Form1窗体上的Panel1控件中加载一个窗体RJForm
        Dim MyRj As New RJForm()
        MyRj.FormBorderStyle = FormBorderStyle.None
        MyRj.TopLevel = False
        Panel1.Controls.Add(MyRj)
        MyRj.Show()
        如图:
       [
只有本站会员才能查看附件,请 登录
可是加载后的窗体Form1无论是放大或还原及手动拉伸窗体时RJForm都不动。请各位大师们指点!!
这个问题看似简单,可是我弄了好几天,在网上也查了相关内容也没找到答案。还望各位高手费心!!
 Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
        Panel1.Top = 10
        Panel1.Left = 300
        Panel1.Width = Me.Width - 445
        Panel1.Height = Me.Height - 87
    End Sub
当Panel1边框类型设置为None时,移动窗体时Panel1可以同时移动,而其中的RJForm却不行。

这个问题难吗?还是太简单不懈回答呢。高手都去哪儿了。

[ 本帖最后由 ZMGTCDY 于 2015-4-8 10:16 编辑 ]
6 回复
#2
ZMGTCDY2015-04-08 16:32
大师们都去哪儿了?
#3
不说也罢2015-04-08 17:59
在Panel1调整位置和大小的时候,要调整New出来的RJForm位置和大小。下面是个例子:

默认从Form1起动, Form1上应当有个Panel,对吧
程序代码:
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim MyRj As New RJForm()
        MyRj.FormBorderStyle = FormBorderStyle.None
        MyRj.TopLevel = False
        Panel1.Controls.Add(MyRj)
        MyRj.Show()
    End Sub

    Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
        Panel1.Top = 10
        Panel1.Left = 300
        Panel1.Width = Me.Width - 445
        Panel1.Height = Me.Height - 87
    End Sub

    Private Sub Panel1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Panel1.Paint
        Panel1_Resize(sender, e)
    End Sub

    Private Sub Panel1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Panel1.Resize
        For Each ctl As Control In Panel1.Controls
            If TypeOf ctl Is Form Then
                ctl.SetBounds(0, 0, Panel1.Width, Panel1.Height)
            End If
        Next
    End Sub
End Class
#4
ZMGTCDY2015-04-08 20:30
回复 3楼 不说也罢
其实我一直在等待着你的回答,看了你的回复我很兴奋!感觉很靠谱。不过我反复验证也没有什么结果。等你的时间的时候一定帮我验证一下,看是否能够实现我想要的功能。多谢多谢!!
#5
不说也罢2015-04-09 08:21
你应当新建一个项目,运行上面的例子,看看是否符合你的要求。
希望例子中Panel对象的两个事件(Panel1_Paint,Panel1_Resize)能给你启发。
#6
ZMGTCDY2015-04-10 09:54
回复 5楼 不说也罢
虽然问题没有解决,但从中学到了一些新知识,还是要感谢你!如果有别的解决方法的话一定告诉我。祝你好运!!
#7
不说也罢2015-04-10 12:46
不客气。我想你遇到的问题与贴子标题是不符的。Panel1中加载的窗体如何能随Panel1尺寸的变化而变化是很简单的,源码也贴了出来。怀疑是不是楼主窗体里控件的布局没达到楼主的意愿。
1