2013-02-28 24 views
6

我們有以下代碼:的WinForms - 錯誤的窗體大小

private void MainForm_Shown(object sender, EventArgs e) 
    { 
     RepositionForm(); 
    } 

    private void RepositionForm() 
    { 
     Rectangle rect = Screen.PrimaryScreen.WorkingArea; 
     this.Width = 100; 
     this.Height = 117; 
     this.TopMost = true; 
     this.Left = rect.Width - this.Width - 1; 
     this.Top = rect.Height - this.Height - 1; 
    } 

當我們推出從Visual Studio應用程序 - 形式示出正確的尺寸:100x117。 但是,當我們通過啓動EXE文件啓動項目時,表單大小爲106x127。

The MinimumSize, MaximumSize and Size properties are set to 100x117. 
WindowsState = Minimized 
ShowIcon = False 
ShowInTaskbar = False 
Topmost = True 
MinimizeBox - False 
MaximizeBox = False 
FormBorderSize = FixedDialog 
ControlBox = True 

這怎麼可能發生,即應用程序的啓動方式有什麼區別?

感謝

+0

完全刪除窗口邊框,看看你是否得到相同的行爲。 – 2013-02-28 13:19:54

+0

你是否在VS的調試模式下啓動它? – 2013-02-28 13:20:25

+0

@ bash.d:是的,在調試模式下 – 2013-02-28 13:28:27

回答

1

我要大膽地猜測,這個問題是與Windows主題和/或桌面窗口管理器不是確定性爲您的操作系統版本。

嘗試將您的Windows主題設置爲基本(桌面 - >個性化),然後重新運行測試。如果你得到不同的結果,你知道它到Windows而不是你的代碼。

此外,你可能想要檢查窗口框架的非客戶區,看看是否從操作系統/主題的變化。

+1

我有一個Windows 8,並有一個Windows基本主題。在Windows 2003和Windows Classic上,表單大小正確。 – 2013-02-28 13:50:45

+0

解決方法是檢查OnLoad()中的表單大小,並在代碼中的某處創建一些常量來檢查。如果您的表單大小與您所期望的不匹配,請獲取差異並添加它以獲得您希望的正確的絕對錶單大小。 – 2013-02-28 13:53:00

+0

我們實際上已經試圖把它放到後面的線程中,把這段代碼放到Resize和Move事件等等。沒有什麼幫助 - 表單大小沒有改變。 – 2013-02-28 17:12:56

相關問題