С некоторой помощью от других потоков я нашел рабочий раствор:
using (ConnectingForm CF = new ConnectingForm())
{
CF.StartPosition = FormStartPosition.Manual;
CF.Show(this);
......
}
О событии загрузки новой формы в:
private void ConnectingForm_Load(object sender, EventArgs e)
{
this.Location = this.Owner.Location;
this.Left += this.Owner.ClientSize.Width/2 - this.Width/2;
this.Top += this.Owner.ClientSize.Height/2 - this.Height/2;
}
(я не эксперт, так пожалуйста, поправьте меня, если я m wrong) Вот как я интерпретирую проблему и решение: Проблема с самого начала состояла в том, что в стартовом положении первой формы (MainForm) была установлена позиция Windows по умолчанию, которая изменяется при запуске формы. Когда я затем вызываю новую форму (форму соединения), это местоположение не относится к местоположению родителя, а к местоположению (0, 0) (верхний левый угол экрана). Таким образом, я видел, как изменилась позиция MainForms, которая показала, что позиция «Соединительная форма» двигалась. Таким образом, решение этой проблемы состояло в том, чтобы сначала установить местоположение новой формы в местоположение главной формы. После этого я смог установить местоположение в центре MainForm.
TL; DR местоположение новой формы не было относительно местоположения родительской формы, но в фиксированном положении, что я предполагаю, что есть (0, 0)
Я изменил MainForm в положение запуска к исправлено для моего удобства. Я также добавил событие, чтобы убедиться, что позиция новых форм всегда была центром MainForm.
private void Location_Changed(object sender, EventArgs e)
{
this.Location = this.Owner.Location;
this.Left += this.Owner.ClientSize.Width/2 - this.Width/2;
this.Top += this.Owner.ClientSize.Height/2 - this.Height/2;
}
private void ConnectingForm_Load(object sender, EventArgs e)
{
this.Owner.LocationChanged += new EventHandler(this.Location_Changed);
this.Location = this.Owner.Location;
this.Left += this.Owner.ClientSize.Width/2 - this.Width/2;
this.Top += this.Owner.ClientSize.Height/2 - this.Height/2;
}
Надеюсь, это поможет другим людям с той же проблемой!
Надеюсь, внизу ссылка имеет исправление. Http: // StackOverflow.com/вопросы/21171764/инструкции для открытия-открытия-формы-сверху-слева-в-в-о-о-окна – user2852008