Как центрировать форму с помощью showdialog (.NET Compact Framework) - PullRequest
8 голосов
/ 16 января 2010

Я хочу центрировать всплывающую форму, запущенную с помощью Form.ShowDialog () в .NET Compact Framework. Я не вижу никаких свойств, таких как StartPosition, в .NET CF Form.

Может кто-нибудь предложить мне, как центрировать всплывающие окна в .NET CF 3.5?

Ответы [ 6 ]

12 голосов
/ 16 января 2010

Вы можете создать метод расширения, который сделает вашу работу:

public static class FormExtensions
{
    public static void CenterForm(this Form theForm)
    {
        theForm.Location = new Point(
            Screen.PrimaryScreen.WorkingArea.Width / 2 - theForm.Width / 2,
            Screen.PrimaryScreen.WorkingArea.Height / 2 - theForm.Height / 2);
    }
}

Вы называете это так:

TheDialogForm f = new TheDialogForm();
f.CenterForm();            
f.ShowDialog();
6 голосов
/ 05 июля 2013

Если родительский элемент не определен для диалога, используйте

login.StartPosition = FormStartPosition.CenterScreen;
login.ShowDialog(); 

где логин является Form объектом

или вы также можете использовать, если вы звоните поверх существующего родителя Form

login.StartPosition = FormStartPosition.CenterParent;
login.ShowDialog();

Это свойство также можно установить в диалоговом окне свойств Form, если вы считаете, что свойство всегда для вас одинаково. По умолчанию он должен быть установлен на CenterParent, который не будет работать, если вы в некоторых случаях вызываете ваш Form перед Родителем Form, например, экран входа в систему впервые и т. Д.

6 голосов
/ 19 января 2010

Если вы хотите, чтобы ваша всплывающая форма отображалась в центре экрана по умолчанию, вы можете просто установить для нее начальную позицию в свойствах формы, она должна звучать как «Center parent».

Примерно так:

form1.StartPosition = FormStartPosition.CenterScreen;
2 голосов
/ 20 мая 2015

Я знаю, что это старый пост, но у меня была та же проблема, и я решил следующим образом:

Я создаю интерфейс:

public interface FormExtensions
    {
        void CenterForm(Form forma);
    }

После того, как я реализовал интерфейс в моем классе:

    public partial class frmFirma : Form, FormExtensions
    {
        public frmFirma()
        {
            InitializeComponent();
        }
        public void CenterForm(Form forma)
        {
            forma.Location = new Point(
            Screen.PrimaryScreen.WorkingArea.Width / 2 - forma.Width / 2,
            Screen.PrimaryScreen.WorkingArea.Height / 2 - forma.Height / 2);
        }
    }

Тогда я могу создать экземпляр: "frmFirma" вызова метода "CenterForm":

private void pictureBox1_DoubleClick(object sender, EventArgs e)
        {
            Formas.frmFirma firma = new Formas.frmFirma();
            firma.CenterForm(firma);
            firma.ShowDialog();     
        }

Надеюсь, у кого-нибудь это сработает.

1 голос
/ 08 февраля 2014

это самый простой способ

Form f= new AmrDealForm();
f.CenterToScreen();
f.ShowDialog();
0 голосов
/ 16 января 2010

Установите свойства left и Top в форме в событии 'frmDialog_Activation

Private Sub frmDialog_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Activated
        Me.Left = (frmMain.Width - Me.Width) / 2 ' AS Your Wish
        Me.Top = (frmMain.Height - Me.Height) / 2 + 165 '' AS Your Wish
    End Sub
...