2013-03-25 20 views
1

我做了一些瀏覽,找不到解決此問題的答案。一旦流量控制超過winform中的特定大小,啓用滾動條?

我的winform包含一個填充停靠的流控制和一堆其他控件。更多的控制離開,並在運行時添加,所以我有流量控制(和winform)自動大小,以適應它出現的一切。

問題是,我希望滾動條在表單超過特定大小時出現。因此,如果表單很小,它會繼續自動調整大小,但一旦達到某個高度,內部流控將繼續進行,但表單停止增長並顯示滾動條。

有沒有辦法做到這一點?我嘗試過的dock,autoscroll和autosize的所有組合都是徒勞的,但也許我做錯了。

只是一個簡短的提示 - 目前,一旦流量控制增長到高於屏幕,它會將該行下方的所有內容移動到新列。我也想禁用這個,所以無論屏幕高度如何,它都會繼續垂直增長(因爲我會有滾動條)。

+1

你需要設置窗體的MAXIMUMSIZE財產。自行增長的頂級窗口不是很好的UI。 – 2013-03-25 19:41:42

回答

1

FlowLayoutPanel到面板panel1

panel1.AutoScroll = true; 
panel1.Dock = DockStyle.Fill; //if you want 

FlowLayoutControl.AutoSize = true; 
FlowLayoutControl.AutoScroll = false; 
FlowLayoutControl.Dock = DockStyle.None; 
FlowLayoutControl.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right; 
FlowLayoutControl.Location = new Point(0,0); 
FlowLayoutControl.Size = new Size(FlowLayoutControl.Width, 0); 
+0

這在大部分情況下都有效。我還必須設置MaximumSize以防止它超過我的屏幕尺寸,並且必須設置它的初始尺寸,否則我會以帶子結束。這兩個簡單的修復和你的解決方案讓我在那裏大部分路!謝謝!雖然看起來很愚蠢,但我需要在正常面板中放置一個流佈局面板,以添加流佈局已經具有的屬性。 – MLavine 2013-03-26 12:54:50

+0

是真的,實際上,如果您只是更改'.AutoSize = false;'和'.AutoScroll = true;'它更容易。那麼你可以將它停靠在你的窗口中,而不必使用另一個面板。 – kschieck 2013-03-26 13:01:49

+0

不完全相同,因爲你的第一種方式意味着當只有少量東西在裏面時,整個窗口會縮小,但是當東西被添加時,窗口就會增長,達到最大尺寸。這是我想要的,所以耶! – MLavine 2013-03-26 16:37:57