Ответ 1
С некоторой помощью из других потоков я нашел рабочее решение:
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;
}
(Я не эксперт, поэтому, пожалуйста, поправьте меня, если я ошибаюсь). Вот как я интерпретирую проблему и решение: с самого начала проблема заключалась в том, что первая стартовая позиция формы (MainForm) была установлена в Windows Default Location, которая изменяется при запуске формы. Когда я затем вызвал новую форму (форму соединения), это местоположение не относилось к ее родительскому местоположению, а к местоположению (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;
}
Надеюсь, это поможет другим с той же проблемой!