获取表单的坐标

时间:2011-10-11 07:10:09

标签: c# forms resize height width

我想知道,你如何获得表格的坐标?

我有一个目前有一个按钮的应用程序。此按钮每隔1秒 随机 重新定位。但是,我希望此按钮始终重新定位在表单中 - 而不是超出表单的范围。所以,我在想我应该找到表单的边界并使用它来确保按钮始终在表单的范围内。如何获得表格的高度和宽度?

我有以下代码工作(但用户的屏幕尺寸不是我想要的):

int screenHeight = Screen.PrimaryScreen.WorkingArea.Height;
int screenWidth = Screen.PrimaryScreen.WorkingArea.Width;

这个代码不应该有用吗?

int xPosition = position.X;
int yPosition = position.Y; 
int num = random.Next(screenHeight);
int num1 = random.Next(screenWidth);

Point templocation;
templocation = new Point(num1, num);


ClickMe.Location = templocation;
templocation.X = num1;
templocation.Y = num; 

非常感谢任何帮助。

PS。我查看了这个网站http://msdn.microsoft.com/en-us/library/system.windows.forms.control.resize(v=vs.71).aspx但是“控制控制=(控制)发件人”这一行生成错误......

4 个答案:

答案 0 :(得分:1)

更新后,这是新答案:

定位按钮时,必须确保不要超出表格边界。所以你的按钮的左侧位置介于

之间
int leftMin = 0;
int leftMax = myForm.ClientSize.Width - myButton.Width;

按钮的顶部位置

int topMin = 0;
int topMax = myForm.ClientSize.Height - myButton.Height;

所以对你的例子来说:

private void timer1_Tick(object sender, EventArgs e)
{
    Random random = new Random();
    int x = random.Next(0, ClientSize.Width - button1.Width);
    int y = random.Next(0, ClientSize.Height - button1.Height);
    button1.Location = new Point(x, y);
}

旧答案......

如果您在屏幕上查找当前表单的位置:

int xPosition = this.Location.X;    
int yPosition = this.Location.Y;

Point position = this.Location;

虽然在表单构造函数中,Location将为“0,0”。

答案 1 :(得分:0)

使用表单的location(类型为Point):

this.Location

(使用此代替Form1

此外:

this.Height
this.Width

答案 2 :(得分:0)

Form.Location属性为您提供“表示屏幕坐标中表单左上角的点。”

答案 3 :(得分:0)

对于宽度和高度,请使用

form.Size.Width
form.Size.Height