Показать диалоговое окно в центре его родителя
Было бесполезно показывать DialogBox в центре его родительской формы. Вот способ отображения диалога.
Я размещаю его родительский центр, но не смог центрировать DialogBox
private void OpenForm(Object point, Object height, Object width)
{
FormLoading frm = new FormLoading();
Point temp = (Point)point;
Point location = new Point(temp.X + (int)((int)width) / 2,
temp.Y + (int)((int)height) / 2);
frm.Location = location;
frm.ShowDialog();
}
private void btnView_Click(object sender, EventArgs e)
{
try
{
ThreadStart starter= delegate { OpenForm(currentScreenLocation,
this.Height, this.Width); };
Thread t = new Thread(starter);
t.Start();
////// Some functionality here...
t.Abort();
}
catch (Exception)
{
}
}
Ответы
Ответ 1
Возможно, вы захотите проверить свойство Form.StartPosition
.
http://msdn.microsoft.com/en-us/library/system.windows.forms.form.startposition.aspx
что-то вроде:
private void OpenForm(Form parent)
{
FormLoading frm = new FormLoading();
frm.Parent = parent;
frm.StartPosition = FormStartPosition.CenterParent;
frm.ShowDialog();
}
Это, конечно, требует установки родительской формы.
Ответ 2
form1.StartPosition = FormStartPosition.CenterScreen;
См. http://msdn.microsoft.com/en-us/library/system.windows.forms.form.startposition(v=vs.110).aspx
Ответ 3
Кроме того, если вы хотите настроить произвольное местоположение, вы можете использовать этот
FormLoading frm = new FormLoading();
Point location = new Point(300, 400);
frm.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
frm.Location = location;
frm.ShowDialog();
Ответ 4
NewForm.Show();
NewForm.Top = (this.Top + (this.Height / 2)) - NewForm.Height / 2;
NewForm.Left = (this.Left + (this.Width / 2)) - NewForm.Width / 2;