2013-07-22 30 views
5

是什么,我必须尊重,以使窗体滚动的规则...滚动窗体,自动滚屏=真不工作

我简单的设置属性AutoScroll为true。 我也试图在Auto Scroll是真实的,设置AutoSize到真/假,但这些都不工作......还试图把面板,并在那里加入所有的组件......仍然没有...

也许使用V or HScrollBar可以帮助,但我真的不知道如何将它与表格链接...

form.AutoScroll = true; 
formMainLayout.AutoScroll = true; 
rootPanel.AutoScroll = true; 
+0

你的孩子控制隐藏形式? –

+0

你是什么意思“儿童控制”隐藏形式? 如果你的意思是这样的话,窗体有这个Controls.Add: rootPanel,rootPanel有formMainLayout,而formMainLayout有所有其他控件 – jovanMeshkov

+0

我的意思是如果你的表单大小是(200,200)。除此之外,你的任何子控件是否存在?(超过200,200) –

回答

3

内容控制滚动。除非需要滚动条,否则不会显示滚动条。通常情况下,您可以设置一个可用的属性来强制它们始终可见,并且直到需要时才将其禁用。

AutoScroll属性必须true,因为你已经找到。但是,那么可滚动控件的内容必须强制父控件显示滚动条。这部分取决于如何将控件嵌入到父项中。

尝试这两个实验:

  1. 将您的表单上Panel,并使其停靠Fill。小组AutoScroll属性设置为true。成面板,放置一个TextBox并将其设置为停靠的Fill为好。还设置MultiLinetrue。运行应用程序,您会注意到两者的大小仅仅是使用可用空间......不会发生滚动,因为Panel或它的TextBox都不会比它们占用的空间大。

  2. 执行与#1中相同的步骤,但这次不要停靠TextBox。相反,请将其设置为较大尺寸,您知道的尺寸将大于可见的Panel的量。运行应用程序现在应该产生一个滚动Panel

希望这个小测试有助于演示什么是控制窗体上的滚动。

+0

对不起,但我不确定你的意思是“表单本身不是一个可滚动的控件”。该窗体与其他控件一样可以滚动:自动滚动+条件满足(包含在边界之外的控件)或vscrollbar/hscrollbar。另外,我不太清楚你说的回答“为什么当我将AutoScroll设置为true时,我看不到酒吧?”的实际/直接适用性。 – varocarbas

+1

@varocarbas你的观点很好。我已经删除了我的答案的一部分。关于你评论的后半部分,这是我试图展示一个答案的问题:“我必须遵守什么规则来使表单可滚动”。 – DonBoitnott

+0

谢谢。现在一切都更清楚了。 – varocarbas

0

AutoScroll属性应该做工精细,但最有可能你不使用它的权利:酒吧,只有当出现需要。例:Form的最小Y为0,在它的控制中的一个的最小Y(一个TextBox)为-20。

如果要包括滚动条无论什么(控制形式的边界或内部没有),你也可以做到这一点。垂直滚动条的示例代码(from MSDN):

// Create and initialize a VScrollBar. 
VScrollBar vScrollBar1 = new VScrollBar(); 

// Dock the scroll bar to the right side of the form. 
vScrollBar1.Dock = DockStyle.Right; 

// Add the scroll bar to the form. 
Controls.Add(vScrollBar1); 
3

我也有同样的问题,我设法解决它...... 所有面板内的子控件有 & 锚,当我只锚设置为顶部时,工作正常的滚动条。

我不知道,为什么锚(子控件)迫使面板不显示滚动条。

但无论如何...希望这将有助于任何人截至这一天。