Ответ 1
Установите форму StartPosition
на FormStartPosition.Manual
. Вы можете сделать это в конструкторе или из конструктора:
StartPosition = FormStartPosition.Manual;
У меня есть приложение с 2 forms
, главное окно и второй Form
.
Я хочу открыть второй Form
на button click
, и его местоположение должно быть рядом с основной формой (поэтому, если основная форма 600px
wide, X
нового Form
будет main.X + 600
)
Попробовал это, но, похоже, он не появляется, он открывается поверх основной формы:
private void button1_Click(object sender, EventArgs e)
{
var form = new SecondForm();
var main = this.Location;
form.Location = new Point((main.X + 600), main.Y);
form.Show();
}
Является Location
не правильным атрибутом?
Установите форму StartPosition
на FormStartPosition.Manual
. Вы можете сделать это в конструкторе или из конструктора:
StartPosition = FormStartPosition.Manual;
Очевидно, вы не рассчитывали на свойство StartPosition. Однако изменение его в ручном режиме не является правильным исправлением, вторая форма, которую вы загружаете, может перемасштабировать себя на другой машине с другой настройкой DPI видео. Очень часто в эти дни. Это, в свою очередь, может изменить его свойство Location.
Правильным способом является ожидание запуска события "Загрузить", перемасштабирование выполняется к тому времени, и окно еще не видно. Это лучшее время, чтобы переместить его в нужное место. StartPosition больше не имеет значения. Вот так:
var frm = new SecondForm();
frm.Load += delegate {
frm.Location = new Point(this.Right, this.Top);
};
frm.Show();
Location
- это свойство права, но вы должны установить
Form.StartPosition = FormStartPosition.Manual;
тоже.