C# 面板自动滚动不起作用

17
我有一个面板,上面有一个 picturebox。当 picturebox 的内容过大时,我想要滚动条。我已经将面板的 autoscroll 属性设置为 true。但是当 picturebox 的内容大于面板/picturebox 的高度时,没有出现滚动条。
我的面板和 picturebox 都被固定在顶部、左侧、底部和右侧。
5个回答

24

您需要将 SizeMode 属性设置为 AutoSize,这将导致 PictureBox 自动调整大小以适应图片的大小。

我认为您应该取消锚定并仅锚定到左上角。其余部分由面板自动处理。否则,PictureBox 可能会遵循锚定,无法将自身调整为大于其包含的面板的大小 - 这将再次导致没有滚动条。


5
我认为你应该放下所有的锚点,只将锚点固定在左上角。谢谢! - Cyril Gandon

13

来自MSDN

目前在 Windows Forms 中存在一个限制,当同时启用 RightToLeft 并将 AutoScroll 设置为 True 时,阻止所有派生自 ScrollableControl 的类正常工作。例如,假设您在表单上放置了一个诸如 Panel 或从 Panel 派生的容器类(例如 FlowLayoutPanelTableLayoutPanel)的控件。如果您将容器的 AutoScroll 设置为 True,然后将其中一个或多个控件的 Anchor 属性设置为 Right,则不会出现任何滚动条。派生自 ScrollableControl 的类会像将 AutoScroll 设置为 False 一样运行。


3
有没有提到“从右到左”? - Asherah
4
我指的是问题本身!我没有看到它。这个答案只适用于同时启用RightToLeftAutoScroll的情况...但我不认为问题描述了这样的情况? - Asherah
当启用标志时,会出现限制。操作员可能具有该标志,也可能没有,应检查是否是原因。 - serhio
公平的调用,公平的调用。 :) - Asherah

7

图片框不应该被固定在底部和右侧。相反,应将其调整为适合显示内容的大小。


4

对我而言,以下代码有助于添加滚动条:

Panel2.Controls.Clear();
Panel2.AutoScroll = false;
Panel2.VerticalScroll.Enabled = true;
Panel2.VerticalScroll.Visible = true;

Panel2.AutoScroll = true;

这感觉很像是hack,但在一个非常特殊的情况下它确实解决了问题。该死的副作用 :-) - Xan-Kun Clark-Davis
不知道为什么,但我也需要这段代码来得到滚动条... - Alex

0

将面板的边框样式更改为 Fixed Single,然后将面板的自动滚动属性设置为 True。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接