VB.Net启动窗体在VS2026中无法按设计尺寸正常显示的问题咨询
解决VB.NET启动窗体无法按设计尺寸正常显示的问题
问题根源
新电脑的DPI缩放比例与旧电脑不一致,VS2026对WinForms高DPI的处理逻辑和VS2019存在差异,导致启动窗体布局被错误裁切;手动硬写固定尺寸的操作忽略了DPI适配,反而引发窗体拉伸/空白问题。
解决方案
移除硬编码尺寸的代码
删除窗体Load事件中手动设置Me.Size = New Size(2623, 1751)的代码,让窗体使用设计时的原始尺寸,依赖AutoScale机制自动适配屏幕DPI。恢复窗体启动位置设置
将窗体的StartPosition属性改回CenterScreen(无需设置为Manual),系统会自动处理居中逻辑。统一高DPI适配设置
- 检查启动窗体的
AutoScaleMode属性,设置为Dpi(WinForms高DPI适配的推荐选项),确保和其他正常显示的窗体保持一致。 - 确认窗体的
AutoSize属性为False,避免窗体自动拉伸;AutoSizeMode保持默认或设为GrowOnly。
- 检查启动窗体的
检查TableLayoutPanel布局
- 如果TableLayoutPanel设置了
Dock = Fill,确认其ColumnStyles和RowStyles使用Percent或AutoSize,而非固定像素值,防止布局溢出导致窗体异常。 - 若不需要铺满窗体,可将TableLayoutPanel的
Dock改为None,手动调整其位置和尺寸。
- 如果TableLayoutPanel设置了
添加全局高DPI感知配置(可选)
在项目的app.config中添加以下配置,强制应用程序使用PerMonitorV2级别的DPI感知,提升跨屏幕适配效果:<configuration> <appSettings> <add key="WindowsFormsApplicationBase.DpiAwareness" value="PerMonitorV2" /> </appSettings> </configuration>或者在
Program.vb的启动代码中添加:Imports System.Windows.Forms Module Program <STAThread> Sub Main() Application.SetHighDpiMode(HighDpiMode.PerMonitorV2) Application.EnableVisualStyles() Application.SetCompatibleTextRenderingDefault(False) Application.Run(New YourStartupForm()) End Sub End Module
内容的提问来源于stack exchange,提问作者Larry Stinson
相关产品推荐
相关产品推荐

