2014-09-04 69 views
-4

我创造了VS2012一个非常小的形式,看起来像这样的设计师为什么这种形式在运行时比在设计时要宽得多?

enter image description here

但是当我运行的应用程序的形式将扩大规模,并期待喜欢这样的:

enter image description here

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

如果您还试图看到您获得相同的结果,我将不胜感激。

我有一种感觉,在VS中有一个窗体的最小大小限制。在这种情况下,问题在于IDE为何让用户在该限制下重新调整表单的大小。

在链接所谓的重复答案(这是不工作)谁回答说:“我在Windows 8.1上测试我不能承诺它可以在所有Windows版本上工作”并猜猜看,我有窗口7,并回答不工作! -

+1

这是标记为适度,以决定是否应该重新打开,请解释为什么它不是重复?它看起来相关。 – scragar 2014-09-05 16:41:59

+0

这是SO的大问题。由于OP我尝试了答案,并且仍然变得更大。所以这个答案不适合我。仅仅因为某人在这里有很多要点,他的回答都不起作用,你应该盲目地解决问题。 – 2014-09-05 19:17:50

+0

在链接所谓的重复答案(这是不工作)谁回答说:“我在Windows 8.1测试我不能保证它可以在所有Windows版本” 并猜猜看,我有Windows 7和答案不工作! – 2014-09-05 19:19:17

回答

4

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

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

如果我有Base.Onload(e)我得到'this.ClientSize = new Size的异常( numericUpDown1.Right + numericUpDown1.Left, numericUpDown1.Bottom + numericUpDown1。最佳); {无法评估表达式,因为当前线程处于堆栈溢出状态。} – 2014-09-04 19:07:36

+0

您是否尝试过您的解决方案? – 2014-09-04 19:07:52

+0

如果我评论Base.Onload表单仍然过大。 – 2014-09-04 19:08:36

-1

人们还可以在设计设置MinimumSize1;1(而不是默认的0;0)。

编辑: 我已经在VS2010和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); 
     } 
    } 
+0

你是否真的打算尝试你的解决方案吗?不,它不起作用 – 2014-09-05 13:43:53

+1

它并没有真正'困扰'我很多,但是,我确实尝试过。 – KekuSemau 2014-09-05 14:15:35

相关问题