winforms 如何使Windows窗体适合任何屏幕分辨率?

qgzx9mmu  于 2022-12-23  发布在  Windows
关注(0)|答案(8)|浏览(255)

我用C#在VS2008上工作。下面的代码对我不起作用。我的窗体是以1024x768分辨率设计的。
我们客户的笔记本电脑是在1366 x 768分辨率。为了解决这个问题,我设置下面的代码在窗体加载事件:

this.Location = new Point(0, 0);
this.Size = Screen.PrimaryScreen.WorkingArea.Size;

但窗体不按屏幕分辨率调整大小,窗体底部被隐藏或剪切,或者我错过了滚动条。
有什么方法可以解决这个问题吗?请告诉我语法。

dfuffjeb

dfuffjeb1#

你不能最大化吗?
System.Windows.Forms.Form.WindowState属性设置为FormWindowState.Maximized

gzjq41n4

gzjq41n42#

如果要以编程方式设置窗体大小,请将窗体的StartPosition属性设置为Manual。否则,窗体自身的定位和大小调整算法将干扰您的算法。这就是您遇到问题中提到的问题的原因。
示例:下面是我如何将窗体大小调整到其原始大小和屏幕工作区大小之间的一半,并将窗体居中放置在工作区中:

public MainView()
{
    InitializeComponent();

    // StartPosition was set to FormStartPosition.Manual in the properties window.
    Rectangle screen = Screen.PrimaryScreen.WorkingArea;
    int w = Width >= screen.Width ? screen.Width : (screen.Width + Width) / 2;
    int h = Height >= screen.Height ? screen.Height : (screen.Height + Height) / 2;
    this.Location = new Point((screen.Width - w) / 2, (screen.Height - h) / 2);
    this.Size = new Size(w, h);
}

请注意,单独将WindowState设置为FormWindowState.Maximized并不会改变恢复后窗口的大小。因此,窗口在最大化时可能看起来不错,但在恢复时,窗口大小和位置仍然可能是错误的。因此,我建议即使您打算以最大化打开窗口时也要设置大小和位置。

smdnsysy

smdnsysy3#

最大化的表单可能会有帮助,或者您可以在表单加载时手动执行此操作:
代码块

this.Location = new Point(0, 0);

this.Size = Screen.PrimaryScreen.WorkingArea.Size;

然后,使用锚定,使窗体内的子控件自动适应窗体的新大小。

flmtquvp

flmtquvp4#

将窗体属性设置为以最大化状态打开。

this.WindowState = FormWindowState.Maximized;
taor4pac

taor4pac5#

int h = Screen.PrimaryScreen.WorkingArea.Height;
int w = Screen.PrimaryScreen.WorkingArea.Width;
this.ClientSize = new Size(w , h);
ppcbkaq5

ppcbkaq56#

您可以简单地设置窗口状态

this.WindowState = System.Windows.Forms.FormWindowState.Maximized;
hjqgdpho

hjqgdpho7#

简单地设置Autoscroll = true为您的windows窗体。。(它不是很好的解决方案,但有帮助)。
也尝试面板(Autoscroll属性= true

jmo0nnb3

jmo0nnb38#

您可以随时告诉窗口以最大化开始...它应该会给予您相同的结果...像这样:第一个月
另外,你也可以尝试(我不推荐)减去任务栏的高度。

相关问题