2010-08-25 46 views
15

我有一個窗體對象,它包含3個對象,一個treeview,一個richtextbox和一個tabcontrol。它們不會停靠在窗體窗體中,但它們被錨定(頂部+左側)。什麼阻止我調整窗體對象的大小(縮小尺寸)?

我已經編寫了代碼來調整它們的大小,當一個表單調整大小的事件處理程序被調用,但它似乎只是爲增加表單大小,也就是說,我不能調整窗體的大小更小的尺寸。這包括我首次增加主窗口窗體並嘗試將其恢復到原始大小的時間。

三個對象的尺寸分別形成之後被手動設置用下面的代碼調整:

 treeView1.Height += (this.Height - oldHeight); 
     richTextBox1.Width += (this.Width - oldWidth); 
     tabControl1.Width += (this.Width - oldWidth); 
     tabControl1.Height += (this.Height - oldHeight); 
     oldHeight = this.Height; 
     oldWidth = this.Width; 

的對象都沒有設定的最小尺寸(它們都是在0,0整個調整大小處理)

什麼是阻止表單被調整爲較小的大小?

+0

是不是有一個原因,你不只是在.NET中使用對接機制?它會照顧你的大小。 – 2010-08-26 05:09:44

+0

對接似乎對我們所希望的,GUI方面的限制太多。我們的表單工具的位置最終影響了我們實現的容易度。 – Maixy 2010-08-29 07:21:54

回答

18

自動調整大小(它在主窗體對象上設置)可防止窗口減小到小於其中包含的對象的大小。隨着主窗體中每個膨脹大小的對象增加,主窗體在調整大小增長後無法收縮。通過在主Form對象上禁用Autosize,我可以重新獲得對調整大小的完全控制。

+2

對於閱讀此內容的其他人,請查看默認爲GrowOnly的屬性「AutoSizeMode」。將其更改爲GrowAndShrink也可能解決此問題(無承諾)。 – ManEatingCheese 2015-04-07 04:39:11

0

只需將您的所有Controls轉換爲Panel並將Panel的屬性設置爲DockFill即可。即使Autosize設置爲true,我相信它仍然有效。

1

右鍵單擊您WinForm的在Visual Studio中 - >選擇性能 - >自動調整大小將設置 - >將其更改爲

OR

包含這一行在您的代碼中

this.AutoSize = false; 
4

如果上述內容無法解決問題,請檢查表單最小大小未設置爲大於所需值的值。

0

可能還有一種方法可以糾正無法通過正常鼠標選擇調整大小的表單的行爲。

與上面的討論相關,我發現[在VS2010中使用VB.net]我的標準Windows窗體之一不會用鼠標選擇調整大小。就好像FormBorderStyle被設置爲「固定」形式。即使將FormBorderStyle更改爲SizableToolWindow也沒有給出預期的鼠標大小行爲。

下面是表單設計屬性某種形式的設置: 自動調整:假 AutoSizeMode:growonly Doublebuffered:真 啓用:真 FormBorderStyle:可調整大小的 ImeMode:NOCONTROL 鎖定:假 AutoScaleMode:字體 的AccessibleRole:默認

此表單的所有可見或代碼屬性設置及其所有設計器屬性設置都與同一項目中可正確允許鼠標調整大小的其他表單完全相同。清理解決方案,重建它也沒有解決凍結表單的問題。點擊最大化確實奏效,點擊最小化也是如此。表單大小可以按照預期的代碼設置。只有鼠標調整大小的窗體才能正常工作。

我發現,所需鼠標選擇調整大小可以通過設置,在代碼中,通過設置參數再次啓用:

myForm.AutoScaleMode = Windows.Forms.AutoScaleMode.Inherit

此參數有在表單的設計中被設置爲「字體」,這也被用於其他正常工作的形式。

然後......奇怪......將它從.Inherit改回到代碼中的「.Font」還允許窗體正確調整大小。

在這種情況下,代碼中的設置(無論是.Inherit還是.Font)似乎是糾正窗體大小調整問題的關鍵元素。看起來系統沒有顯示用戶的隱藏參數,它以某種方式干擾了表單的預期操作。

+0

羅嗦和不清楚,但在第二次看,並與其他人比較,不太VLQ。 – 2015-12-16 02:58:21

相關問題