2014-03-07 75 views
0

後,我需要顯示它之前調整自己的狀態:VB.NET FormStartPosition調整

Private Sub frm1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load 

    Me.Width = Me.pnlMain.Width + 25 

End Sub 

在開發過程中,我的狀態真的是廣給我看在窗體右側的一些控制。它們在運行時不可見,而且我的表單不應該像開發時那樣廣泛。

但是,我仍然想使用窗體的「CenterScreen」啓動位置。

這不起作用,因爲VB.NET會在加載事件之前設置表單的位置。

有人可以幫忙嗎?

這不起作用:

InitializeComponent() 

    Me.StartPosition = FormStartPosition.CenterScreen 'This is done BEFORE the load event, so it is too early for my purposes 

回答

1

可以使用Shown事件:

Private Sub MyForm_Shown(sender As Object, e As System.EventArgs) Handles Me.Shown 
    Me.Location = New Point(CInt((Screen.PrimaryScreen.WorkingArea.Width/2) - (Me.Width/2)), CInt((Screen.PrimaryScreen.WorkingArea.Height/2) - (Me.Height/2))) 
End Sub 

編輯:或者更好的是,在HandleCreated事件,所以你看不到的形式迅速出現在原來的地方,他們移動到中心屏幕:

Private Sub MyForm_HandleCreated(sender As Object, e As System.EventArgs) Handles Me.HandleCreated 
    Me.Location = New Point(CInt((Screen.PrimaryScreen.WorkingArea.Width/2) - (Me.Width/2)), CInt((Screen.PrimaryScreen.WorkingArea.Height/2) - (Me.Height/2))) 
End Sub 
+0

這將工作,但我正在尋找一種方式來使用表單的啓動位置,而不是「黑客」。 – tmighty

+1

@tmighty - 什麼是黑客攻擊是在窗體上有控件,用戶無意在加載時看到並調整窗體大小。我所建議的並不是破解,它是完成您所需要的完美合法的方式。正如你所知道的,在編程中,總有不止一種方法可以完成任務。 –

+0

好吧,好吧,那就讓我說我不想再有黑客了:-) – tmighty