2010-01-16 2 views
7

Ich möchte ein Popup-Formular zentrieren, das mit Form.ShowDialog() in .NET Compact Framework gestartet wird. Ich sehe keine Eigenschaft wie StartPosition in .NET CF Form-Objekt.So zentrieren Sie ein Formular mithilfe von Showdialog (.NET Compact Framework)

Kann mir bitte jemand vorschlagen, wie man Popups in .NET CF 3.5 zentriert?

+0

Andere Eigenschaften ausprobieren Siehe http://stackoverflow.com/questions/944897/show-a-child-form-in-the-centre-of-parent-for-in- – Brij

Antwort

11

Sie können eine Erweiterungsmethode machen, die die Arbeit für Sie:

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

Sie nennen es wie folgt aus:

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

Dies funktioniert nicht! Ich sehe immer noch, dass das Formular zufällig auf dem Bildschirm angezeigt wird. – Gopinath

+0

@ Gopinath: das ist seltsam; Ich habe den Code ausprobiert, bevor ich ihn gepostet habe. Gibt es einen anderen Code, der die Eigenschaft "Location" oder "Bounds" des Formulars festlegt? –

+0

danke fredrik.Beim Testen auf dem Gerät wurde das Popup wie erwartet zentriert. Aber wenn die Anwendung auf einem PC ausgeführt wurde, wurde sie nicht ordnungsgemäß zentriert. Vielen Dank für Ihre Hilfe. – Gopinath

0

Stellen Sie die linken und Top-Eigenschaften auf die von der Form, in ' frmDialog_Activated Ereignis

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

Wenn Sie Ihr Popup-Formular möchten erscheinen in der Mitte des Bildschirms standardmäßig ca Sie In den Formulareigenschaften wird nur eine Anfangsposition für das Element festgelegt. Es sollte wie "Center Parent" klingen.

Etwas wie folgt aus:

form1.StartPosition = FormStartPosition.CenterScreen; 
+0

Wie in der Frage angegeben, ist die Eigenschaft 'StartPosition' in .NET Compact Framework nicht verfügbar. –

+0

verdamme mich! Ich werde nicht auf Sachen antworten, die ich vor langer Zeit benutzt habe .. wirklich :) – hoodoos

5

Wenn Eltern nicht für den Dialog dann verwenden definiert

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

wo Login ist die Form Objekt

oder Sie können auch verwenden, wenn Sie sind Aufrufen eines vorhandenen Elternteils Form

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

Diese Eigenschaft kann auch im Eigenschaftendialogfeld der Form festgelegt werden, wenn Sie denken, dass die Eigenschaft für Sie immer gleich ist. Standardmäßig sollte es CenterParent eingestellt werden, die in nicht Fall arbeiten Sie sich berufen Ihre Form vor dem Elternteil Form in einigen Fällen, wie Login-Bildschirm zum ersten Mal usw.

0

ist dies der einfachste Weg,

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

ich weiß, das alte Post, aber ich hatte das gleiche Problem und ich mit dieser Art und Weise gelöst:

ich schaffen eine Schnittstelle:

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

Nachdem ich habe implementiert die Schnittstelle auf meiner Klasse:

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

Dann kann ich Kiste eine Instanz der „frmFirma“ eine der Methode „CenterForm“ Aufruf:

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

Ich hoffe, das funktioniert für jemand.

Verwandte Themen