在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。
由于Size
是一个结构,你不能这样做。
相反,你需要一个新的Size
值赋给属性,像这样:
this.MinimumSize = new Size(800, 600);
编辑你的编译器是错误的;它将Size
类与Control.Size
属性混淆。
要解决这种不公正的错误,你需要一个命名空间来限定类型:
this.MinimumSize = new System.Drawing.Size(800, 600);
,或者你只是忘记using System.Drawing
。
system.drawing ...为什么我应该需要那个只是为了设置一个该死的窗口大小?谢谢 – Dai 2011-03-15 16:10:49
@戴:因为Windows窗体需要绘制。 http://msdn.microsoft.com/en-us/library/system.drawing.aspx – 2011-03-15 17:19:14
有同样的问题,这是答案。谢谢+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);
Width
和Height
用来获取现有值,而不是设置它们。
如果你去的MinimumSize
的定义,你会看到:
public override Size MinimumSize { get; set; }
再次确认,即使你决定为它设置的值,你必须通过一个实际Size
实例。Width
和Height
属性严格依赖于Size
实例。
这实际上并不正确;属性是可写的。 – SLaks 2011-03-15 15:42:56
属性对于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);
尺寸是'struct',你必须创建一个新的'struct'。 – 2011-03-15 15:36:15
请查阅您最喜爱的C#语言手册,了解值和引用类型之间的区别。 Size类型是一个结构体,一个值类型。 – 2011-03-15 15:39:46
这是什么编译器? – SLaks 2011-03-15 15:57:39