c# - 获取表格的矩形

c# - Get Rectangle of Form

我正在使用 C# 制作汽车动画,想测试汽车是否仍在 Window 中。我使用 Windows-Forms Designer 创建了一个表单。

我有一个汽车的矩形:

public Rectangle CarShape { get; set; }
...
CarShape = new Rectangle(Pos, new Size(28, 62));

还有我的 Form1 Class:

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);
...
}

这里我得到错误:"An object reference is required for the non-static field, method, or property 'Form.Size'"。

我也用'this'试过,它在静态属性中似乎也是无效的。如果我将 属性 更改为非静态,这在当前上下文中将无效。

稍后我会用if(!Window.Contains(car.CarShape))

检查一下

如何将 Window 设为矩形,或者是否有更好的方法来测试汽车是否仍在 window 内?

表单的 Size 属性 不是静态的,因此您不能使用 returns 表单的 Size 属性 的静态 属性 ].

更简单的方法是像这样使用 ClientRectangle 属性:

if (ClientRectangle.Contains(CarShape))
{

}

问题一定是在尝试初始化定义中的变量。这样做:

1- 将变量声明为:

public Rectangle win { get; } 

2- 然后在表单的构造函数中:

public Form1()
{
    InitializeComponent();
    Startcars();
    win = new Rectangle(new Point(0, 0), this.Size);
}

正如@Lithium 在评论中所说,您不应将 Window 命名为变量,因为它可能会造成混淆。遵循 C#

中的 Naming Conventions 始终是个好主意

编辑

您还应该使用 this.ClientRectangle 而不是 this.Size(感谢 Reza Aghaei 指出。