Windows Form程序中子Form加载到Panel后显示不全问题求助
问题根因
你添加的属性存在冲突,AutoSize = True会让Form优先适配自身控件的尺寸,直接覆盖了Dock.Fill和手动设置Size的效果,这是尺寸异常的核心原因。
正确实现步骤
- 首先删除
AutoSize、AutoSizeMode相关的开启配置,关闭Form的自动尺寸适配 - 保留
Dock = DockStyle.Fill让Form自动匹配Panel的可用尺寸 - 调整属性设置顺序,把添加控件到Panel的操作放到属性设置完成之后
- 如果Form内部控件总尺寸确实大于Panel可视范围,给Panel开启自动滚动属性即可查看全部内容
修正后代码
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' 先清空Panel里的旧窗体,避免多个窗体重叠 Panel1.Controls.Clear() Dim f As New Form2 f.TopLevel = False f.WindowState = FormWindowState.Normal f.FormBorderStyle = FormBorderStyle.None ' 关闭自动尺寸适配,避免覆盖Dock设置 f.AutoSize = False ' 让窗体自动填充整个Panel f.Dock = DockStyle.Fill f.Visible = True ' 所有属性设置完成后再把窗体添加到Panel Panel1.Controls.Add(f) End Sub
额外适配方案
如果Form2的固定尺寸本身就大于Panel的最大可用尺寸,只需要提前给Panel1开启滚动功能,就能通过滚动查看全部控件:
你可以在主窗体的Load事件里添加如下代码,或者直接在设计器里把Panel1的AutoScroll属性设为True
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Panel1.AutoScroll = True End Sub
内容的提问来源于stack exchange,提问作者Rasika Lakmal
相关产品推荐
相关产品推荐

