2010-01-16 14 views
7

Desidero centrare un modulo popup lanciato utilizzando Form.ShowDialog() in .NET Compact Framework. Non vedo alcuna proprietà come StartPosition in oggetto CF CF Form.Come centrare un modulo utilizzando showdialog (.NET Compact Framework)

Qualcuno può suggerirmi come gestire i popup in .NET CF 3.5?

+0

Prova altre proprietà Vedi http://stackoverflow.com/questions/944897/show-a-child-form-in-the-centre-of-parent-form-in-c – Brij

risposta

11

È possibile effettuare un metodo di estensione che fa il lavoro per voi:

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

Si chiama così:

TheDialogForm f = new TheDialogForm(); 
f.CenterForm();    
f.ShowDialog(); 
+0

Questo non funziona! Vedo ancora il modulo posizionato casualmente sullo schermo. – Gopinath

+0

@ Gopinath: è strano; Ho provato il codice prima di postarlo. C'è qualche altro codice che imposta la proprietà 'Location' o' Bounds' del modulo? –

+0

grazie fredrik.Quando testato sul dispositivo, il popup è centrato come previsto. Ma quando l'applicazione è stata eseguita su un PC, non ha centrato correttamente. Molte grazie per il vostro aiuto. – Gopinath

0

Impostare le proprietà Left e Top sulla della forma in ' frmDialog_Activated evento

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 
4

Se volete che il vostro forma a finestra appaiono in centro dello schermo per impostazione predefinita ca n basta impostare una posizione iniziale per esso nelle proprietà del modulo, dovrebbe suonare come 'Center parent'.

Qualcosa di simile a questo:

form1.StartPosition = FormStartPosition.CenterScreen; 
+0

Come indicato nella domanda, la proprietà 'StartPosition' non è disponibile in .NET Compact Framework. –

+0

dannazione a me! non risponderò a cose che ho usato tanto tempo fa .. davvero :) – hoodoos

5

Se il padre non è definito per la finestra di dialogo quindi utilizzare

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

cui accesso è la Form oggetto

o si può anche utilizzare se si è chiamata in cima a un genitore esistente Form

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

Questa proprietà può anche essere impostata nella finestra di dialogo Proprietà dello Form, se si ritiene che la proprietà sia sempre la stessa per l'utente. Per impostazione predefinita, dovrebbe essere impostato su CenterParent, che non funziona nel caso in cui si invoca la tua Form prima della controllante Form in alcuni casi, come schermata di accesso per la prima volta, ecc

0

questo è il modo più semplice

Form f= new AmrDealForm(); 
f.CenterToScreen(); 
f.ShowDialog(); 
2

so che questo è vecchio post, ma ho avuto lo stesso problema e ho risolto con questo modo:

creo un interfaccia:

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

Dopo che ho fatto implementa l'interfaccia sulla mia classe:

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

allora posso cassa un'istanza della: "frmFirma" una chiamata al metodo "CenterForm":

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

Spero che questo lavora per qualcuno.

Problemi correlati