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

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

问题描述:

我在设置我正在处理的C#应用​​程序中窗口的最小大小时遇到​​了问题。我曾尝试这个代码在窗体的构造函数:在C#中设置最小窗口大小.NET

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

但是编译器说:

Cannot modify the return value of 'System.Windows.Forms.Control.MinimumSize' because it is not a variable

任何人都可以提供一些线索在这个问题上我吗?

编辑:

使用:

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

给出:

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

对不起,我忘了提,我已经试过了。 也忘了提及我没有使用Visual Studio。

+0

尺寸是'struct',你必须创建一个新的'struct'。 – 2011-03-15 15:36:15

+1

请查阅您最喜爱的C#语言手册,了解值和引用类型之间的区别。 Size类型是一个结构体,一个值类型。 – 2011-03-15 15:39:46

+0

这是什么编译器? – SLaks 2011-03-15 15:57:39

由于Size是一个结构,你不能这样做。
相反,你需要一个新的Size值赋给属性,像这样:

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

编辑你的编译器是错误的;它将Size类与Control.Size属性混淆。

要解决这种不公正的错误,你需要一个命名空间来限定类型:

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

,或者你只是忘记using System.Drawing

+0

system.drawing ...为什么我应该需要那个只是为了设置一个该死的窗口大小?谢谢 – Dai 2011-03-15 16:10:49

+6

@戴:因为Windows窗体需要绘制。 http://msdn.microsoft.com/en-us/library/system.drawing.aspx – 2011-03-15 17:19:14

+0

有同样的问题,这是答案。谢谢+1! – 2014-03-24 18:05:20

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

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

基本上,MinimumSize属性的返回值始终是结构对象;编译器不会让你分配给这个临时值(如错误中所述,它不是一个变量)。

This MSDN Social thread对这个问题是最有启发性的。

你应该使用这样的事情:

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

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

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

public override Size MinimumSize { get; set; }

再次确认,即使你决定为它设置的值,你必须通过一个实际Size实例。WidthHeight属性严格依赖于Size实例。

+0

这实际上并不正确;属性是可写的。 – SLaks 2011-03-15 15:42:56

+0

属性对于Size实例是可写的(当您将它传递给MinimumSize时)。 – 2011-03-15 15:45:44

这是编译器的错误:

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

的基本问题是,的minimumSize构件属性返回一个结构 - 这是一个值类型 - 等被复制到本地临时变量 - 这阻止您将值写回基础属性。

要解决这个问题,就需要分配给自己的minimumSize:

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