【问题标题】:WinForm is opening in large size than screenWinForm 以比屏幕大的尺寸打开
【发布时间】:2018-10-26 13:53:11
【问题描述】:

我有一个窗口窗体,这里是它的主要属性

  1. windows 状态maximized
  2. 自动调整大小true
  3. AutoSizeMode 设置为GrowAndShrink

它在我的 PC 中工作正常(以最大化尺寸打开,适合屏幕),但是当我在另一台 PC 中尝试此应用程序时,表单尺寸以大尺寸打开。它已最大化,但其控件尺寸很大。 我做错了什么?

请记住,附加了两个屏幕,并且我已经准确地提到(在表单加载事件中)我的表单使用此代码 sn-p 在特定屏幕中打开。

  int displayScreen = GetScreenNumber();
  this.Location = Screen.AllScreens[displayScreen].WorkingArea.Location;

【问题讨论】:

  • 您的应用程序是否支持 DPI(设置在 app.manifest 中或通过其他方式)?如果没有,Window 会自动虚拟化。是不是也有点模糊
  • 这是完全正常的,那台机器上的显示器分辨率较低。窗口也大了很多,但是您看不到它,因为您将其最大化。程序员往往拥有漂亮的高分辨率屏幕,但这并不能完全帮助他们创建可伸缩的 UI。

标签: c# winforms


【解决方案1】:

您可以设置表单的最小和最大尺寸,如下所示

this.MinimumSize = new Size(140, 480);
this.MaximumSize = new Size(140, 480);

你也可以像下面这样使用它

private void Form1_Load(object sender, EventArgs e)
        {
            int h = Screen.PrimaryScreen.WorkingArea.Height;
            int w = Screen.PrimaryScreen.WorkingArea.Width;
            this.ClientSize = new Size(w, h);
        }

它可以为您工作的另一种方式是

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);

【讨论】:

    猜你喜欢
    • 2012-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多