2013-08-28 37 views
1

我在Visual Studio 2012中創建了默認的Windows窗體應用程序項目。當我運行程序時,看到窗體的寬度不能小於140像素。爲什麼?而如何克服這種奇怪的限制?窗體的寬度不能小於140像素。爲什麼?

+1

檢查窗體設計器屬性窗口 – Steve

+0

@Steve上的minimumSize屬性的值MinimumSize = 0; 0; –

回答

2

用戶將無法使用窗口的頂部最小化,最大化和關閉按鈕。我不相信你可以用大的FormBorderStyle來改變這種行爲。這是一個可用性的東西。

如果您刪除邊框,將其設置爲None例如,您可以將其設置爲任何你想要的程序做:

form.Width = [...]; 

您可以調整進一步形成有邊框類型:無,FixedToolWindow,和SizableToolWindow。工具窗口也不會讓你低於一定數量,但None會讓你做任何超過2px的事情。您可以將其設置爲低於此值的某個值,但不會發生異常,但它不會執行任何操作。

+0

在我的程序中,窗口的最小化,最大化和關閉按鈕並不總是需要的,所以無關緊要,因爲窗體的寬度很小而無法看到。 但我也需要該用戶能夠改變窗體的大小,將鼠標光標懸停在邊上。但是,如果FormBorderStyle設置爲None,這是不可能的... –

+1

一個SizableToolWindow會讓你下降到20像素左右。這足夠嗎? –

+0

,但然後按鈕「最小化」和@最大化@不會出現... –

1

我從來沒有使用formborders ..我總是喜歡用FormBorderstyle.None

去調整,你必須添加一些代碼。

放一個圖片框,添加一個圖片夾,並將它放在角落裏。

public Form1() 
    { 
     InitializeComponent(); 
     pictureBox1.MouseDown += new MouseEventHandler(Form1_MouseDown); 
     pictureBox1.MouseMove += new MouseEventHandler(Form1_MouseMove); 
     pictureBox1.MouseUp += new MouseEventHandler(Form1_MouseUp); 
    } 

    void Form1_MouseUp(object sender, MouseEventArgs e) 
    { 
     isHolding = false; 
    } 

    void Form1_MouseMove(object sender, MouseEventArgs e) 
    { 
     if (isHolding) 
     { 
      int diffX = this.Width - pictureBox1.Left; 
      int diffY = this.Height - pictureBox1.Top; 
      pictureBox1.Left += e.X - curX; 
      pictureBox1.Top += e.Y - curY; 
      this.Width = pictureBox1.Left + diffX; 
      this.Height = pictureBox1.Top + diffY;     
     } 
    } 

    void Form1_MouseDown(object sender, MouseEventArgs e) 
    { 
     isHolding = true; 
     curX = e.X; 
     curY = e.Y; 
    } 

    int curX = 0, curY = 0; 
    bool isHolding = false; 
4

我正在尋找一個解決方案和MinimumSize(0,0)沒有任何影響。發現,MinimumSize設置爲(1,1)實際上解決了問題,在顯示我的表單後,它的大小正確地小於140px。在(的ListView)_csvLv

列中單擊事件應該觸發彈出對話框:

 var topAnchor = _csvLv.PointToScreen(new Point(
      _csvLv 
       .Columns 
       .OfType<ColumnHeader>() 
       .Where(c => c.DisplayIndex < e.Column) 
       .Sum(c => c.Width), 
      0)); 

     Left = topAnchor.X; 
     Top = topAnchor.Y; 

     MinimumSize = new Size(1,1); 
     ClientSize = new Size(_csvLv.Columns[e.Column].Width, 100); 

     ShowDialog(); 
+0

感謝這是比所選的更好的解決方案。最小尺寸可以使用 。 – KwentRell

+0

該解決方案(MinimumSize = new Size(1,1))是最簡單可靠的。 – oliver

1

試試這個。 自動調整沒有 AutosizeMode growOnly FormBorderStyle SizableToolWindow < ==這一次做到了 我仍然可以移動的形式,並調整其大小(寬度)少譚112

相關問題