2008-11-26 42 views
1

我想在VB.net中居中表單。它不是居中對齊,而是在中心和0,0(左上)之間的中點處結束。.Net FormStartPosition.CenterScreen not centering

我使用的代碼

Me.StartPosition = FormStartPosition.CenterScreen

其從IntializeDisplay的方法,而這又是從窗體Load方法調用被調用。

我假設我正在設置一些性能來擾亂中心計算,但我不確定它會是什麼。

如果有人有任何想法,他們將不勝感激。

謝謝。

回答

0

你有任何形式調整大小/定位邏輯實施?如果是這樣,請將其註釋掉並重試。

嘗試在設計器中設置Form.StartPosition(將其設置爲InitializeComponent()),而不是在Load事件中。

嘗試重置Form.LocationForm.Size的值。如果您的表單已本地化,請刪除資源文件中的Form.LocationForm.Size條目。

+0

謝謝我會試一試並回復你。 – 2008-11-26 16:12:49

3

我認爲你在設置StartPosition的值太遲了 - 在Form.Load被調用的時候,Loading已經完成並且窗體有一個指定的位置。

在您的問題中引用的代碼行上設置一個斷點,並查看窗體位置 - 它將已經位於它出現的位置。

爲了達到您想要的效果,需要在窗體開始其內置位置處理之前設置StartPosition的值。我建議在調用InitializeComponent()之後,將代碼放在窗體構造函數中。

+0

這只是部分正確。如果表單在其他位置調整大小或設置爲自動調整大小,則確實需要在加載方法中重新居中。 – 2017-03-01 21:33:56

4

在事件中添加這和它的工作:

Public Sub New() 

    ' This call is required by the Windows Form Designer. 
    InitializeComponent() 
    ' Add any initialization after the InitializeComponent() call. 
    Me.StartPosition = FormStartPosition.CenterScreen 

End Sub 
0

依託形式初始化處理其起始位置而不是嘗試打電話到中心的形式方法。即使您在顯示後更改了尺寸後,也可以將表格居中。

例子:

Me.CenterToScreen() 

或者

Me.CenterToParent() 

根據你試圖居中形式。

1

如果要調整的形式,或使用自動調整大小,你需要在Load事件結束使用

Me.CenterToScreen() 

命令。