【问题标题】:Dynamically Resize forms and controls inspite of change in Display size (Small/Medium/Large) in VB.net尽管 VB.net 中的显示大小(小/中/大)发生变化,但动态调整表单和控件的大小
【发布时间】:2014-11-26 08:44:27
【问题描述】:

我们开发了 Windows 应用程序,其中包含许多默认小显示尺寸的表单和控件,并且运行良好。 但在客户端系统中,显示并不一致。因此,当相同的代码以中/大屏幕尺寸运行时,控件会重叠

如果有人提供动态调整大小/适合任何显示器(小 100%、中 125%、大 150%)的表单和控件的解决方案,那将非常有帮助

还有有没有办法在 vb.net 中找到显示尺寸(小 100%、中 125%、大 150%)

您可以在控制面板中更改显示大小。

【问题讨论】:

  • 你不应该有不同显示尺寸的重叠控件,除非你手动设置控件的位置和大小。对每个控件的大小和位置使用百分比,而不是固定值。例如,如果控件的宽度是表单宽度的 20%,它应该保持 20%

标签: vb.net winforms windows-applications


【解决方案1】:

您可以使用 Anchor 属性根据窗体大小自动调整控件大小。您可以将控件的任何一侧锚定到窗体的该一侧。例如,如果我将图片框的所有四个边都锚定到表单上,那么当调整表单大小时,图片框将模仿表单的形状。例如,如果只锚定图片框的顶部和底部,它会随着窗体的变化而改变高度,但宽度和水平位置将保持不变。

【讨论】:

    【解决方案2】:

    通过研发终于找到了解决方案

    像 ScaleForm(me) 一样在 Form_Load 中调用下面的函数

     Public Sub ScaleForm(WindowsForm As System.Windows.Forms.Form)
            Using g As System.Drawing.Graphics = WindowsForm.CreateGraphics
                Dim sngScaleFactor As Single 
                Dim sngFontFactor As Single = 1
                If g.DpiX > 96 Then
                    sngScaleFactor = g.DpiX / 96
                    'sngFontFactor = 96 / g.DpiY
                End If
                If WindowsForm.AutoScaleDimensions = WindowsForm.CurrentAutoScaleDimensions Then
                    'ucWindowsFormHost.ScaleControl(WindowsForm, sngFontFactor)
                    WindowsForm.Scale(sngScaleFactor)
                End If
            End Using
        End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-24
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-24
      相关资源
      最近更新 更多