Nếu bất kỳ biểu mẫu cửa sổ nào (biểu mẫu con) được mở từ một luồng mới của cửa sổ Chính (biểu mẫu mẹ) thì không thể giữ cửa sổ phụ ở giữa cửa sổ chính do đó chúng ta cần sửa vị trí của cửa sổ phụ theo cách thủ công bằng cách nghĩa của X và Y đồng quy.
Trong thuộc tính của Subwindow, thay đổi "StartPosition" thành "Manual"
mã trong cửa sổ chính
private void SomeFunction()
{
Thread m_Thread = new Thread(LoadingUIForm);
m_Thread.Start();
OtherParallelFunction();
m_Thread.Abort();
}
private void LoadingUIForm()
{
m_LoadingWindow = new LoadingForm(this);
m_LoadingWindow.ShowDialog();
}
mã trong subwindow để xác định vị trí của chính nó thông qua vị trí hiện tại chính cũng như kích thước
public LoadingForm(Control m_Parent)
{
InitializeComponent();
this.Location = new Point( m_Parent.Location.X+(m_Parent.Size.Width/2)-(this.Size.Width/2),
m_Parent.Location.Y+(m_Parent.Size.Height/2)-(this.Size.Height/2)
);
}
Ở đây tọa độ của trung tâm mẹ được tính toán cũng như hướng dẫn con được giữ chính xác ở trung tâm của phụ huynh bằng cách tính toán trung tâm của chính nó bằng (this.height / 2) và (this.width / 2) hàm này có thể cũng được thực hiện cho các sự kiện di dời của cha mẹ.