【问题标题】:Set minimum window size in C# .NET在 C# .NET 中设置最小窗口大小
【发布时间】:2011-03-15 15:32:56
【问题描述】:

在我正在处理的 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。

【问题讨论】:

  • 大小是struct,你必须创建一个新的struct
  • 请查阅您最喜欢的 C# 语言书籍,了解值类型和引用类型之间的区别。 Size 类型是一个结构体,一个值类型。
  • 有趣:有了 Mono,我得到了一个更有帮助的 error CS1612:无法修改“System.Windows.Forms.Form.MinimumSize”的值类型返回值。考虑将值存储在临时变量中

标签: c# .net winforms


【解决方案1】:

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

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

EDIT 你的编译器错误;它混淆了 Size 类和 Control.Size 属性。

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

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

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

【讨论】:

【解决方案2】:

你应该使用这样的东西:

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

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

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

public override Size MinimumSize { get; set; }

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

【讨论】:

  • 这不是真的;属性是可写的。
  • Size 实例的属性是可写的(当您将其传递给 MinimumSize 时)。
【解决方案3】:

这是编译器错误:

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

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

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

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

【讨论】:

    【解决方案4】:

    你需要直接赋值给MinimumSize属性:

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-11-28
      • 2013-10-05
      • 2022-07-05
      • 2023-04-11
      • 2010-10-11
      • 2019-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多