2010-01-16 50 views
7

我想在.NET Compact Framework中使用Form.ShowDialog()啓動的彈出窗體居中。在.NET CF Form對象中我沒有看到像StartPosition這樣的屬性。如何使用showdialog(.NET Compact Framework)中心表單

有人可以請建議我如何將彈出窗口集中在.NET CF 3.5中?

+0

嘗試其他屬性請參閱http://stackoverflow.com/questions/944897/show-a-child-form-in-the-centre-of-parent-form-in-c – Brij 2010-01-16 08:10:45

回答

11

您可以擴展方法,做的工作適合你:

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(); 
+0

這不行!我仍然看到隨機放置在屏幕上的表格。 – Gopinath 2010-01-16 10:12:43

+0

@Gopinath:很奇怪;在發佈之前,我嘗試了代碼。是否有其他代碼設置表單的「位置」或「邊界」屬性? – 2010-01-16 10:29:00

+0

感謝fredrik。在設備上測試時,彈出窗口按預期居中。但是當應用程序在PC上運行時,它沒有正確居中。 非常感謝您的幫助。 – Gopinath 2010-01-19 15:08:47

0

設置左和Top屬性的形式「 frmDialog_Activated事件

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

如果你希望你彈出的形式出現在屏幕中央默認在您的CA ñ只需在表單屬性中設置一個起始位置,它應該聽起來像'中心父'。

事情是這樣的:

form1.StartPosition = FormStartPosition.CenterScreen; 
+0

正如問題所述,'StartPosition'屬性在.NET Compact Framework中不可用。 – 2010-01-19 15:24:06

+0

該死的我!我不會回答我很久以前用過的東西..真的:) – hoodoos 2010-01-19 20:59:18

5

如果家長沒有爲對話中定義,然後使用

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

,其中登錄名是Form對象

,或者如果你是,你還可以使用呼叫現有父母的頂部Form

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

如果您認爲該屬性始終與您相同,則也可以在Form的屬性對話框中設置此屬性。默認情況下,應設置爲CenterParent,這將不工作的情況下,將調用您的Form在某些情況下,家長Form,像登錄界面首次等

0

這是最簡單的方式

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

我知道這是舊的文章,但我有同樣的問題,我用這種方式解決:

我創建一個接口:

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

我希望這個工程有人。

相關問題