【问题标题】:Form1 visual size doesn't match Form1 debug visual sizeForm1 视觉尺寸与 Form1 调试视觉尺寸不匹配
【发布时间】:2016-09-07 07:21:55
【问题描述】:

我有一个问题,当我调试我的应用程序时,它与我在设计器中设置的大小不匹配。我已经尝试将表单的最小尺寸设置为所需的值。

表单由一个拆分面板组成,每侧都有一个面板作为填充物停靠。 标签具有默认锚点。文本框有左、上、右锚点。 按钮左上角有锚点。

如果我在运行时将底部向下拖动,我会得到我想要的尺寸/设计,但为什么它不是这样开始的,我该如何修复它?

【问题讨论】:

  • 属性窗口 (F4) 中的尺寸编号是多少?
  • 1189、895 和最小尺寸 1189、895
  • 您是否在代码中调整它的大小?还要检查 formborderstyle 属性
  • 不是所有的尺寸和布局都是在属性窗口中进行的

标签: c# winforms visual-studio


【解决方案1】:

看起来您正在使用相当高分辨率的屏幕。 Windows 窗体在缩放内容方面不是很好,并且具有您需要注意的各种怪癖。如果可能,我会迁移到 WPF,但如果您确实需要继续使用 Windows 窗体,那么您应该这样做。

  • 在主窗体上使用AutoScaleMode.Dpi。当显示器的 DPI 高于默认的 96 (100%) 时,它将缩放和重新定位控件以匹配您的设计。您也可以尝试AutoScaleMode.Font,但如果您使用非默认字体(Tahoma 8,25 pt 或类似字体),它可能效果不佳。
  • 使用TableLayoutPanelFlowLayoutPanel 使定位控制更容易。 FlowLayoutPanel 水平或垂直地动态放置控件。如果您熟悉 WPF 或 Windows Phone 开发,它基本上是一个 StackPanel 控件。
  • 确保您的屏幕 DPI 为 96 (100%),并在整个开发过程中保持不变。您仍然必须确保在其他 DPI 上测试该应用程序,以便具有不同设置的用户能够使用您的应用程序。

以下是有关 DPI 缩放的更多信息:

编辑:Visual Studio 的 Windows 窗体设计器使用与 Windows 版本不同的主题来显示窗体,这就是窗体在运行时看起来不同的原因之一。在运行时,表单使用当前运行应用程序的操作系统的主题。

【讨论】:

  • 我发现使用 TableLayoutPanel 或 FlowLayoutPanel 会在设计时弄乱您的表单,当在计算机上以不同于最初创建的分辨率打开项目时。在运行时表单又可以了,但在设计时它看起来真的很丑。我通过使用大量普通面板和停靠属性(不是锚点!)解决了这个问题。它需要更多的工作,是的,它的老派,但它奏效了
  • @GuidoG 没错,Windows 窗体应用程序确实可以给您带来一些惊喜,这就是其中之一。我想 OP 的要点是有很多方法可以尝试补救这种情况,但由于支持的 Windows 版本和不同的显示器种类繁多,很难找到适用于任何地方的完美解决方案。幸运的是,我们有 WPF!
  • Hankide 是的,有 WPF,但我正在维护一个包含 50 多个表单和 MDI 要求的项目。在这些情况下,WPF 并没有多大用处。除非它最终进化,否则自 VS 2013 以来我就没有看过它?
  • 好的,感谢您的意见!我会尝试。可悲的是,我很想使用 WPF,但由于这是一个学校项目,并且必须使用 Windows 窗体
  • @GuidoG 使用该项目切换到 WPF 肯定会做很多工作。 WPF 仍然不支持开箱即用的 MDI 表单,但有一些商业和开源实现可用。我真的很喜欢 MVVM 和数据操作的简单性(我有一个应用程序大量使用数百万行的 DataGrid),这是 WPF 真正擅长的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-30
  • 2022-12-20
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
  • 2012-09-11
  • 2014-12-14
相关资源
最近更新 更多