c#中的可滚动表单,AutoScroll = true不起作用
为了使表单可滚动,我必须遵守哪些规则…
我简单地将Property AutoScroll
设置为true。 当Auto Scroll
为true时我也试过,将AutoSize
设置为true / false,但这些都没有工作……还试图将Panel添加到其中所有组件……仍然没有……
也许使用V or HScrollBar
可以提供帮助,但我真的不知道如何将它与表格链接…
form.AutoScroll = true; formMainLayout.AutoScroll = true; rootPanel.AutoScroll = true;
内容控制滚动。 除非需要,否则不会出现滚动条。 通常,有一个可用的属性可以设置为强制它们始终可见,并且只需在需要时禁用。
正如您已经找到的那样, AutoScroll
属性必须为true
。 但是,可滚动控件的内容必须强制父控件显示滚动条。 这部分取决于控件如何嵌入父级中。
试试这两个实验:
-
在表单上放置一个
Panel
并将其停靠在Fill
。 将Panel的AutoScroll
属性设置为true
。 在该面板中,放置一个TextBox
并将其设置为Fill
。 同时将MultiLine
设置为true
。 运行应用程序,您会注意到两者的大小只是使用可用空间…不会发生滚动,因为Panel
及其TextBox
都不会大于它们占用的空间。 -
执行与#1中相同的步骤,但这次不要停靠
TextBox
。 相反,将其设置为较大的尺寸,您知道的尺寸将大于可见的Panel
数量。 运行应用程序现在应该生成滚动Panel
。
希望这个小测试有助于演示控制表单上滚动的内容。
我也有同样的问题,我设法修复它…面板内的所有子控件都有一个左右锚点,当我只将锚点设置为Top时,滚动条在哪里工作正常。
我不确定为什么左边和右边的锚(子控件)强制面板不显示滚动条。
但无论如何……希望这对今天的任何人都有帮助。
AutoScroll
属性应该可以正常工作,但很可能您没有正确使用它:仅在需要时才会显示该栏。 示例: Form
最小Y为0,其中一个控件( TextBox
)的最小Y为-20。
如果你想要包含一个滚动条,无论是什么(窗体边界内的控件),你也可以这样做。 垂直滚动条的示例代码( 来自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);