2013-04-30 140 views
4

我有一个C#表格,带有一个相当大的边框。我想将最小大小设置为(850,760)(默认开始大小),但是当我尝试在表单属性菜单中设置该值时,它会一直将其更改为(850,720)。我试图通过代码设置它如下:设置表格的最小尺寸

this.minimumSize = new System.Drawing.Size(850, 760); 

但是当我运行代码时,我仍然可以垂直缩小我的表单。有没有人有任何想法可能是什么问题?

编辑:我使用两个显示器,一个标准1280x1024和其他宽屏1366x768,可能是这个问题?在那种情况下,有什么方法可以测试用户的显示器分辨率,并根据该分辨率设置最小尺寸?

+2

'this.miniumSize' - miniumSize拼写错误。它应该是最小的,但我觉得这只是一个错误,因为这会在IDE中引发错误。 – 2013-04-30 14:57:40

+0

是的,这是一个错字;代码不会编译 – 2013-04-30 14:58:26

+1

请记住,最小大小属性不会阻止用户调整窗体大小。 – 2013-04-30 14:58:27

回答

2

许多在运行时运行的代码在设计时也处于活动状态。这给了Winforms设计者一个非常漂亮的所见即所得的用户界面,但它确实有一些不幸的副作用。包括让设计师崩溃,并给你白色的屏幕。或者如果你访问这个网站的名字,VS会崩溃到桌面。

这是一个这样的副作用,运行时代码将MinimumSize限制在Screen.WorkingArea中,并且在设计时也这样做。只要尝试输入(0,3000)即可看到发生。您可以通过在代码中分配属性来强制执行它。

+0

有趣。所以如果我理解正确,通过代码设置最小高度(就像我做的那样)会在没有使用宽屏显示器的机器上给出想要的结果? – 2013-04-30 20:53:57

+1

我不确定你想要完成什么。正常的用法是将MinimumSize设置为窗口仍然可用的最小大小。并且将AutoScroll设置为True,以便具有不适合MinimumSize的小型监视器的用户仍然可以访问屏幕外的控件。 – 2013-04-30 22:41:18

+0

这就是我想要完成的事情,虽然我不知道AutoScroll功能。 – 2013-05-01 13:59:40

2

我认为你应该再次看看你的代码。它应该看起来像这样的设计师或你的表单的page_load。

/// <summary> 
    /// Required method for Designer support - do not modify 
    /// the contents of this method with the code editor. 
    /// </summary> 
    private void InitializeComponent() 
    { 
     this.components = new System.ComponentModel.Container(); 
     this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
     this.Text = "Form1"; 
     this.MinimumSize = new Size(300,300); 
    } 
1

试试这个:

FormBorderStyle形式的属性FixedSingle。然后窗体边框调整大小将被禁用

+0

我不想禁用调整大小。我想设置一个最小尺寸;如果用户愿意,用户可以做得更大。 – 2013-04-30 16:12:16

+0

嗨,在属性菜单中设置最小尺寸(例如:400,500)之后,您是否能够将其宽度和高度减少到400,500? – 2013-04-30 16:45:51

+0

不,“minimumSize”属性按预期工作,我只是无法将其设置为我想要的值。 – 2013-04-30 18:01:58