在C#.NET中设置最小窗口大小

时间:2011-03-15 15:32:56

标签: c# .net winforms

我无法在我正在处理的C#应用​​程序中设置窗口的最小大小。我在表单的构造函数中尝试了这段代码:

this.MinimumSize.Width = 800;
this.MinimumSize.Height = 600;

但是编译器说:

  

无法修改返回值   'System.Windows.Forms.Control.MinimumSize'因为它不是变量

有人可以为我解释这个问题吗?

编辑:

使用:

this.MinimumSize = new Size(800,600);

给出:

 error CS0118: 'System.Windows.Forms.Form.Size' is a 'property' but is used like a 'type'

抱歉,我忘了提到我已经尝试过了。 还忘了提到我没有使用Visual Studio。

4 个答案:

答案 0 :(得分:47)

由于Size是一个结构,你不能这样做 相反,您需要为属性分配一个新的Size值,如下所示:

this.MinimumSize = new Size(800, 600);

编辑您的编译器错了;它使Size类与Control.Size属性混淆。

要解决此不公正的错误,您需要使用命名空间限定类型:

this.MinimumSize = new System.Drawing.Size(800, 600);

或者你刚忘了using System.Drawing

答案 1 :(得分:6)

你应该使用这样的东西:

this.MinimumSize = new Size(100, 100);

WidthHeight用于获取现有值,而不是设置它们。

如果你转到MinimumSize的定义,你会看到:

public override Size MinimumSize { get; set; }

再次确认即使您决定为其设置值,也必须传递实际的Size实例。 WidthHeight是与Size实例严格关联的属性。

答案 2 :(得分:3)

您需要直接分配到MinimumSize属性:

this.MinimumSize = new Size(800, 600);

基本上,MinimumSize属性的返回值始终是 new 结构对象;编译器不允许您分配给此临时值(如错误中所述,它不是变量)。

This MSDN Social thread对这个主题最具启发性。

答案 3 :(得分:3)

这是编译器错误:

http://msdn.microsoft.com/en-us/library/wydkhw2c(VS.71).aspx

基本问题是MinimumSize成员属性返回一个结构 - 它是一个值类型 - 因此被复制到一个本地临时变量 - 这会阻止你将值写回底层属性。

要解决此问题,您需要分配给MinimumSize本身:

this.MinimumSize = new Size(800, 600);