为什么这种形式在运行时比在设计时更宽?

时间:2014-09-04 18:49:55

标签: c# vb.net winforms

我在VS2012中创建了一个非常小的表单,在设计器中看起来像这样:

enter image description here

但是当我运行应用程序时,表单的大小会增加,看起来像这样:

enter image description here

任何想法为什么?我尝试了不同的表格边框样式仍然是相同的结果。

如果你也试着看到你得到相同的结果,我将不胜感激。

我觉得VS中的表单有最小大小限制。在这种情况下,问题是IDE允许用户在该限制下重新调整表单大小。

在链接所谓的重复答案(也没有工作)中,回答的人说“我在Windows 8.1上测试过我不能保证它可以在所有Windows版本上运行”并猜猜是什么,我有Windows 7并回答不工作! -

2 个答案:

答案 0 :(得分:4)

窗口的最小大小基于最小可用标题栏。为图标和最小/最大/关闭按钮留出足够空间的一个。即使对于没有一个错误的窗户也是如此。但是,解决方法很简单,您可以在Load事件中更改大小。由于视频DPI设置,请注意重新缩放。大致是:

    protected override void OnLoad(EventArgs e) {
        this.ClientSize = new Size(
            numericUpDown1.Right + numericUpDown1.Left,
            numericUpDown1.Bottom + numericUpDown1.Top);
        base.OnLoad(e);
    }

答案 1 :(得分:-1)

还可以将Designer中的MinimumSize设置为1;1(而不是默认的0;0)。

编辑: 我已经在VS710和VS2013上在Windows 7和不同的目标框架(在VS13,3.5,4.0,4.5,4.5.1中)进行了测试。 以下示例代码适用于所有情况。如果有人可以确认哪些系统不起作用,我会欢迎任何评论。

    private void button1_Click(object sender, EventArgs e)
    {
        using (Form frm = new Form())
        {
            frm.FormBorderStyle = FormBorderStyle.None;

            // -> size is 80,80 with this line,
            // and wider if this line is commented out
            frm.MinimumSize = new Size(1, 1);

            frm.BackColor = Color.Orange;
            frm.Size = new Size(80, 80);
            frm.Click += (s, e2) =>  frm.Close();
            frm.ShowDialog(this);
        }
    }