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