Получить координаты формы

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

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

4 ответа

Решение

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

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

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

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

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

form.Size.Width
form.Size.Height

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

this.Location

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

Также:

this.Height
this.Width
Другие вопросы по тегам