2013-03-25 33 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