.net - 根据屏幕分辨率更改表单的分辨率(不更改显示器分辨率并使用最大化屏幕选项)

标签 .net vb.net visual-studio-2005 screen-resolution

我在论坛上进行了搜索,并尝试了一些方法......但它们似乎并没有真正起作用。让我列出我的问题。

我的笔记本电脑屏幕分辨率非常高:1400x1050。我正在以此为基础设计我的应用程序。

我的同事在他的笔记本电脑(分辨率较低)上进行了尝试,但该应用程序不适合他的笔记本电脑。按钮被拖出屏幕空间。

所以,我希望我的应用程序能够根据屏幕分辨率自动调整大小/调整。 我找到了一些类似的论坛,并尝试了开发人员建议的一些方法,但这对我来说并没有真正起作用。

我尝试过: Solution 1 :但是改变用户的屏幕分辨率来代替调整表单。

我不想使用最大化屏幕选项,也不想更改用户的电脑设置。 不幸的是,我没有使用表格布局面板。

请给我建议一个简单的解决方案。

最佳答案

好的,这就是最简单的了。只需迭代 VB 控件并根据新屏幕分辨率与设计屏幕分辨率的比率调整它们的大小即可。即,类似:

    Dim DesignScreenWidth As Integer = 1600
    Dim DesignScreenHeight As Integer = 1200
    Dim CurrentScreenWidth As Integer = Screen.PrimaryScreen.Bounds.Width
    Dim CurrentScreenHeight As Integer = Screen.PrimaryScreen.Bounds.Height
    Dim RatioX as Double = CurrentScreenWidth / DesignScreenWidth
    Dim RatioY as Double = CurrentScreenHeight / DesignScreenHeight
    For Each iControl In Me.Controls
        With iControl
            If (.GetType.GetProperty("Width").CanRead) Then .Width = CInt(.Width * RatioX)
            If (.GetType.GetProperty("Height").CanRead) Then .Height = CInt(.Height * RatioY)
            If (.GetType.GetProperty("Top").CanRead) Then .Top = CInt(.Top * RatioX)
            If (.GetType.GetProperty("Left").CanRead) Then .Left = CInt(.Left * RatioY)
        End With
    Next

请注意,我使用反射来查看每个控件是否具有我们需要调整的属性。我这样做的方式很干净,但使用“后期绑定(bind)”并且需要选项严格关闭。经过测试并批准。

关于.net - 根据屏幕分辨率更改表单的分辨率(不更改显示器分辨率并使用最大化屏幕选项),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4643693/

相关文章:

c# - 满足这些要求的最佳 ORM 是什么

.net - 如何在样式中使用附加属性?

vb.net - 数字签名安装盾安装程序

vb.net - Crystal 报表中每个组的新页面

c++ - 有没有办法在 Visual Studio 2019 中加载当前 .cpp 文件的 .h 文件?

c# - 手动调用EventHandler时出现无意义的错误消息

c# - 属性的内部 setter 可以序列化吗?

c# - 如何在Windows窗体中使窗体模态化?

c# - VS(2010) 中的强制文档

c++ - 有符号/无符号比较