【发布时间】:2017-03-03 10:15:43
【问题描述】:
我正在使用 C# 制作汽车动画,并想测试汽车是否仍在窗口中。我用 Windows-Forms Designer 创建了一个表单。
我有一个矩形的汽车:
public Rectangle CarShape { get; set; }
...
CarShape = new Rectangle(Pos, new Size(28, 62));
还有我的 Form1 类:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
Startcars();
}
//Here is my Question:
public static Rectangle Window { get; } = new Rectangle(new Point(0,0),Form1.Size);
...
}
这里出现错误:“非静态字段、方法或属性‘Form.Size’需要对象引用”。
我也尝试过使用“this”,这在静态属性中似乎也是无效的。如果我将属性更改为非静态,这将在当前上下文中无效。
稍后我将通过if(!Window.Contains(car.CarShape))检查它
如何将 Window 设为矩形,或者是否有更好的方法来测试汽车是否仍在车窗内?
【问题讨论】:
-
为什么将
Window声明为static? -
首先,不要使用Window作为你的属性名,因为它是winforms中的一个通用类。其次,该属性不能是静态的,因为 Form1 类没有大小,但该类的实例有大小。然后照 Pikoh 说的去做。
-
如何获取Form1的实例?我必须制作一个新的 Form1() 吗?也许是一个愚蠢的问题,但我是 C# 新手...
-
this.ClientRectangle是您正在寻找的。span> -
@RezaAghaei 好点,谢谢。
标签: c# winforms window rectangles