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 指出。
我正在使用 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#
编辑
您还应该使用 this.ClientRectangle 而不是 this.Size
(感谢 Reza Aghaei 指出。