【问题标题】:C# Panel autoscroll doesn't workC# 面板自动滚动不起作用
【发布时间】:2010-01-12 12:04:51
【问题描述】:

我有一个面板,上面有一个图片框。当图片框的内容太大时,我想要滚动条。我已在面板上将自动滚动设置为 true。但是当图片框的内容大于面板/图片框的高度时,不会显示滚动条。

我的面板固定在上、左、下、右。图片框也锚定在上、左、下、右。

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    您必须将 SizeMode 属性设置为 AutoSize,这会导致 PictureBox 自动调整为图片大小。

    我认为你应该放下锚点,只锚定在左上角。其余的由面板自动处理。因为否则 PictureBox 可能会尊重锚点,无法将其自身调整为大于其包含的面板 - 导致再次没有滚动条。

    【讨论】:

    • “我认为你应该放下锚点,只锚定在左上角”拯救我的一天,ty!
    【解决方案2】:

    来自MSDN

    Windows 窗体中当前存在一个限制,当RightToLeft 启用且AutoScroll 设置为True 时,所有从ScrollableControl 派生的类都无法正常运行。例如,假设您在表单上放置了诸如Panel 之类的控件或派生自Panel 的容器类(例如FlowLayoutPanelTableLayoutPanel)。如果将容器上的AutoScroll 设置为True,然后将容器内的一个或多个控件上的Anchor 属性设置为Right,则不会出现滚动条。从ScrollableControl 派生的类就像AutoScroll 被设置为False

    【讨论】:

    • 有提到RightToLeft吗?
    • 我的意思是问题!我没有看到它。此答案仅适用于同时启用RightToLeftAutoScroll 时.. 但我不认为这个问题描述了这种情况?
    • 启用标志时会出现限制。 OP 可能有也可能没有那个标志,它应该检查这是否是原因。
    • 公平通话,公平通话。 :)
    【解决方案3】:

    图片框不应锚定在底部和右侧。相反,将其调整为要显示的内容。

    【讨论】:

      【解决方案4】:

      对我来说,下面的代码有助于添加滚动条:

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

      【讨论】:

      • 感觉很hacky,但它确实在非常特殊的情况下发挥了作用。该死的副作用:-)
      【解决方案5】:

      将面板的边框样式更改为固定单,然后将面板的自动滚动属性更改为 True。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-11
        • 1970-01-01
        • 1970-01-01
        • 2015-03-14
        • 1970-01-01
        • 1970-01-01
        • 2021-12-05
        相关资源
        最近更新 更多