2011-04-12 39 views
0

每次我打開我的表單,它默認爲328x192。我會將其更改爲328x170,保存我的項目,關閉我的項目,然後重新打開它。Form.Size Live在哪裏?我有一些超級奇怪的問題

突然間,我的形式回到328x192,而不是我救它作爲(328x170)的大小。

我走進我的Form.Designer.cs並試圖加入這一行的代碼:

this.Size = new System.Drawing.Size(328, 170); 

而且是,當我重新打開該項目,形式爲328x192。我不知道這個價值從何而來,這讓我發瘋。關於這個問題的奇怪的部分是,它似乎隨機發生,我會在我的表單底部獲得額外的餘量。我擔心這會導致生產中斷,因爲即使將它保存到正確的尺寸,當我重新打開它時,它也會回到錯誤的尺寸。

不用說,GUI的錯誤讓我的工作看起來更糟1000%再好的東西是引擎蓋下。

+0

檢查'MinimumSize' – Homam 2011-04-12 21:42:51

+0

MinimumSize = new System.Drawing。大小(300,170); – sooprise 2011-04-12 21:43:55

+0

我想你也需要檢查MaximumSize屬性。 – 2011-04-12 21:52:06

回答

3

編輯設計器生成的代碼。設計者不保存Size屬性,它不是表單大小的好辦法。表單標題欄的高度由用戶首選項確定。它保存ClientSize屬性。這是一個很重要的因素,它決定了可以控制多少空間。

這是不明顯是什麼使尺寸恢復。可能是一件簡單的事情,忘記檢查變化,然後引導你進行大規模的鵝羣追逐。

0

(22)的區別可以是報頭。我檢查了我的WinForms項目之一,它在文件中了.Designer.cs這一行:

this.ClientSize = new System.Drawing.Size(292, 273); 

而在屬性對話框中被設置爲300×300大小。區別在於邊框和標題尺寸。

你有沒有設置此行,如果是試圖改變這些值來代替。

0

您是否有可能設置MinimumSize?或者,也許AutoSize屬性設置爲true。這些屬性都可能導致您的窗口忽略某些場景中的Size屬性。

否則,我認爲this.ClientSize是你需要看看在設計文件中的屬性。這些值是客戶區的大小(減去窗口邊界)。

2

你試過從代碼隱藏窗體上設置大小?

編輯 - 如:

public Form1() 
{ 
    InitializeComponent(); 
    this.Size = new System.Drawing.Size(328, 170); 

} 

我懷疑你可能會以某種方式從活動設計窗口中更改窗體大小。 如果您在表單初始化後手動設置代碼,設計人員將無法影響該代碼。

除非有人與你搞亂:)

+0

+1表示有人可能會搞砸我 – sooprise 2011-04-14 19:02:09

+0

:) 但它有幫助嗎? 順便說一句:漢斯是對的 - 你真的不應該編輯設計器生成的代碼。你有代碼隱藏或設計師本身... – NightDweller 2011-04-14 22:01:23