2008-09-18 36 views
1

我想實現的是,上有一個按鈕,導致窗體「下拉」和變大,顯示更多的信息的表格。我現在的嘗試是這樣的:如何將Sytem.Windows.Form的高度限制爲精確值?

private void btnExpand_Click(object sender, EventArgs e) 
{ 
    if (btnExpand.Text == ">") 
    { 
     btnExpand.Text = "<"; 
     _expanded = true; 
     this.MinimumSize = new Size(1, 300); 
     this.MaximumSize = new Size(int.MaxValue, 300); 
    } 
    else 
    { 
     btnExpand.Text = ">"; 
     _expanded = false; 
     this.MinimumSize = new Size(1, 104); 
     this.MaximumSize = new Size(int.MaxValue, 104); 
    } 
} 

偉大的工程!除了一個小細節...請注意,寬度值應該能夠從1到int.MaxValue?那麼,在實踐中,他們從this.Width去int.MaxValue,即。你可以使表格變大,但不會再變小。我爲什麼會出現這種情況而感到茫然。有人有主意嗎?

爲了記錄:我也嘗試了形式的高度設置爲根據相同的值上任何布爾_expanded被設置爲Form.Resize處理程序,但我結束了同副作用。

PS:我使用.NET 3.5 Visual Studio 2008中的其他解決方案是值得歡迎的,但這是我對如何「應該」做的想法和我是如何試圖做到這一點。

編輯:看來代碼工作,按照公認的答案迴應。如果其他人遇到了這個問題,請檢查表單的AutoSize屬性,它應該是FALSE,而不是TRUE。 (這是默認的,但如我所用的形式,並用自動調整大小的標籤上也用於顯示早期調試信息我打開開關)

回答

1

按照該文檔,使用0來表示沒有最大或最小尺寸。我只是試過它,它根本不喜歡0。所以我像你一樣使用int.MaxValue,它工作。你使用的是什麼版本的框架?

+0

出於某種原因自動調整大小設置爲true的形式,並且是與MAXIMUMSIZE和interfereing的minimumSize ...呵呵。哦,謝謝無論如何:) – 2008-09-18 22:56:44

+0

當然,不問題。 =) – 2008-09-18 23:03:47

0

實際上,看看MinimumSizeMaximumSize(.NET 3.5)的反射器,它的設計行爲與文檔建議的不完全相同。有一個最小寬度約束由輔助類決定,0沒有特殊含義(即無限制)

另一個說明,我在上面的代碼中看到,基於Button的文本值進行擴展或約束,這是一個糟糕的主意,如果有人走來以後,改變文本的設計師說,「擴大」,而不是<不看你的代碼,然後它就會有意想不到的副作用,想必你有一些代碼的地方,改變了按鈕上的文字,這將是最好有一個狀態變量的地方,並在該切換。