c#winform屏幕分辨率

时间:2014-01-22 11:16:13

标签: c# windows winforms

我有一个C#WinForms应用程序,当我将可执行文件提供给不同的用户时,应用程序会以不同的大小显示(根据他们的屏幕分辨率)。无法看到应用程序的某些部分。

如何为表单设置绝对1280X800,并确保不论分辨率如何都不会更改表单大小!

4 个答案:

答案 0 :(得分:2)

您可以使用Control.ScaleControlControl.Scale

private void MainForm_Load( object sender, EventArgs e )
{
    float width_ratio = (Screen.PrimaryScreen.Bounds.Width / 1280);
    float heigh_ratio = (Screen.PrimaryScreen.Bounds.Height / 800f);

    SizeF scale = new SizeF(width_ratio, heigh_ratio);

    this.Scale(scale);

   //And for font size
   foreach (Control control in this.Controls)
   {
      control.Font = new Font("Microsoft Sans Serif", c.Font.SizeInPoints * heigh_ratio * width_ratio);
   }
}

希望这有帮助。

答案 1 :(得分:2)

使用表单的MaximumSize属性。

form.MaximumSize = new Size(1280, 800);

如果您不希望用户将其设置为小于所需大小,也可以设置MinimumSize。

答案 2 :(得分:1)

您可以改为设计GUI,使其更容易上下滚动。您可以使用以下内容

Layout Managers

Docking

Anchors

答案 3 :(得分:1)

属性

Screen.PrimaryScreen.WorkingArea

对于表单大小调整和定位非常有用。例如这段代码:

this.Width = Screen.PrimaryScreen.WorkingArea.Width/2;
this.Height = Screen.PrimaryScreen.WorkingArea.Height/2;
this.Top = (Screen.PrimaryScreen.WorkingArea.Top + Screen.PrimaryScreen.WorkingArea.Height)/4;
this.Left = (Screen.PrimaryScreen.WorkingArea.Left + Screen.PrimaryScreen.WorkingArea.Width)/4;

会将执行该表单的表单放在屏幕中间,并将其调整为屏幕的一半。

WorkingArea var用于在计算屏幕大小时排除桌面上的任务栏和其他停靠项等内容。

希望这有帮助。