2013-02-14 63 views
9

我有一個表單顯示爲模式對話框。形式看起來像這樣在設計:爲什麼我的表單在顯示時被調整大小?

as in the design view in Visual Studio (寬度= 360,高度= 215)

當在應用程序中所示,它得到10個像素比被定義更高和更廣泛的,留下一個寬緣周圍的底部邊緣和左邊緣:

as in the running application (寬度= 370,高度= 225)

的形式明確地設定在尺寸360x215像素,具有FixedDialog邊界風格,從繼承,並沒有任何代碼來操縱維度(除了自動生成的設計器文件)。如果我將邊框樣式更改爲FixedSingleFixedToolWindow,它會顯示正確的大小(但我希望它的樣式爲FixedDialog)。

任何想法是什麼造成這種情況?


我已經通過刪除窗體上的MinimumSize設置來修復此問題。看起來,如果它被設置爲相同的大小(或接近,但我還沒有完全找到閾值)作爲Size屬性,則會引入邊距。由於表格不可調整大小,因此我不需要設置MinimumSize,因此可以將其刪除。

我還是不明白爲什麼雖然是這樣。

+0

是否設置了最大或最小屬性? – CR41G14 2013-02-14 12:56:38

+1

@ CR41G14:是的,Size,MinimumSize和MaximumSize都設置爲360,215。 – adrianbanks 2013-02-14 12:57:55

+0

出於好奇,它總是被碰撞到370x225(不管你使用的是什麼初始尺寸),還是它總是在每邊增加10個像素?您是否嘗試過其他窗口大小以查看結果? – jszigeti 2013-02-14 13:11:05

回答

2

我和我的表格有類似的問題。最後我發現問題出現在屬性中的表單的最大和最小大小。如果你想要一個固定的,不可重複的表格,你必須禁用它們。

希望這會有所幫助。

1

你爲什麼不暴力破解問題的代碼:

protected override void SetClientSizeCore(int x, int y) 
{ 
    base.SetClientSizeCore(360, 215); 
} 

這臺客戶端區域。你需要計算你想要的值。

6

首先,您的表單似乎已將AutoScaleMode設置爲Font。這會導致表單的大小取決於使用的字體。

其次,確保創建的主要形式之前具有以下線:

Application.EnableVisualStyles(); 
Application.SetCompatibleTextRenderingDefault(false); // Not using this - or using true - will cause a different font rendering 
... 
Application.Run(new Form1());       // this creates your main form 

(通常這是在Program.cs靜態Main方法的一部分)

不使用那些線導致的使用一個不同的字體渲染(看看你的截圖 - 這些字母看起來並不完全相同!)

2

我創建了一個表單,更改了字體並將FormBorderStyle設置爲FixedDialog,但我沒有遇到任何問題。只需檢查一下你在表單加載時設置了什麼。

// this needs to be set as joe said is correct. 
Application.SetCompatibleTextRenderingDefault(false); 

如果您可以提供您在formLoad方法上編寫的代碼。以便我可以嘗試糾正這個問題。

相關問題