53 votes

Afficher la boîte de dialogue au centre de son parent

Il a été difficile d'afficher une boîte de dialogue au centre de son formulaire parent. Voici une méthode pour afficher une boîte de dialogue.

Je positionne son parent au centre mais je ne parviens pas à centrer la boîte de dialogue.

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)
    {
    }
}

108voto

Kornelije Petak Points 2579

Vous pouvez vérifier le Form.StartPosition propriété.

http://msdn.microsoft.com/en-us/library/system.Windows.forms.form.startposition.aspx

quelque chose du genre :

private void OpenForm(Form parent)
{
    FormLoading frm = new FormLoading();
    frm.Parent = parent;
    frm.StartPosition = FormStartPosition.CenterParent;
    frm.ShowDialog();
}

Cela nécessite bien sûr de définir le parent du formulaire.

13voto

user2070102 Points 61

5voto

Mohsen K Points 66

Si vous créez une MessageBox personnalisée, vous pouvez simplement mettre ceci :

CenterToParent();

dans votre MessageBox personnalisé formload() méthode.

4voto

DuyLuc Points 103

En outre, si vous souhaitez configurer un emplacement arbitraire, vous pouvez utiliser ceci

FormLoading frm = new FormLoading();
Point location = new Point(300, 400);
frm.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
frm.Location = location;
frm.ShowDialog();

2voto

Billy Xd Points 69
NewForm.Show();

NewForm.Top = (this.Top + (this.Height / 2)) - NewForm.Height / 2;
NewForm.Left = (this.Left + (this.Width / 2)) - NewForm.Width / 2;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X