Получить координаты формы - PullRequest
0 голосов
/ 11 октября 2011

Мне было интересно, как вы получаете координаты формы?

У меня есть приложение, в котором есть кнопка.Эта кнопка случайным образом перемещается каждые 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 но строка "Control control = (Control) sender;"выдает ошибку ...

Ответы [ 4 ]

1 голос
/ 11 октября 2011

После вашего обновления вот новый ответ:

При позиционировании кнопки вы должны следить за тем, чтобы не выходить за границы форм.Таким образом, левая позиция вашей кнопки находится где-то между

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 "внутри конструктора форм.

0 голосов
/ 11 октября 2011

Свойство Form.Location дает вам "Точка, которая представляет верхний левый угол формы в экранных координатах."

0 голосов
/ 11 октября 2011

Для ширины и высоты используйте

form.Size.Width
form.Size.Height
0 голосов
/ 11 октября 2011

Используйте форму местоположение (которая имеет тип точки):

this.Location

(используйте вместо Form1)

Также:

this.Height
this.Width
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...