2012-11-23 59 views
9

由於某些原因,如果將Form.MaximumSize的寬度和高度都設置爲零,它將允許您擁有無限制的窗口大小,但是如果要設置限制,則必須在寬度和高度都爲同一時間。我想要一個固定的寬度,但沒有高度的限制。是否可以設置表格的最大寬度但保留最大高度不受限制?

// No Limits 
    this.MaximumSize = new Size(0,0); 

    // Form Height will be stuck at 0 
    int ArbitraryWidth = 200; 
    this.MaximumSize = new Size(ArbitraryWidth, 0); 
+0

您是否考慮攔截調整大小事件並手動強制窗體大小不超過您的任意寬度? – ose

+0

@ose - 是的,但它看起來有點醜陋 –

+0

不幸的建築決定=>稍微難看的代碼:( – ose

回答

1

是否有可能設置的最大寬度爲形式,但離開 最大高度不受限制?

不是。可以按如下方式模擬它:

private void Form1_Resize(object sender, EventArgs e) 
    { 
     SetMaximumWidth(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     SetMaximumWidth(); 
    } 

    private void SetMaximumWidth() 
    { 
     if (Width > 200) 
      Width = 200; 
    } 
15

使用INT_MAX因爲這可以由Size反正表示理論極限:

//Max width 200, unlimited height 
this.MaximumSize = new Size(200, int.MaxValue); 
4

我知道這個問題是一對夫婦歲,但我遇到了同樣的問題,我所做的就是將其中一個參數設置爲屏幕的分辨率,假設表單的大小不能超過屏幕的大小。

this.MaximumSize = new Size(200, Screen.PrimaryScreen.Bounds.Height); 

希望這可以幫助別人。

+0

適用於我雖然在實踐中它可能沒有INT_MAX不同,謝謝! –

+0

這也幫助我,謝謝! – Kaitlyn

+1

這將導致例如,如果您將筆記本電腦插入投影儀進行演示,如果您的第二,第三等顯示屏比您的主顯示屏高,並且您將該表單移動到該顯示屏上,或者如果您有堆疊顯示器,並希望在多個屏幕上展開它 – Dan

相關問題