将垂直滚动条添加到面板

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将垂直滚动条添加到面板相关的知识,希望对你有一定的参考价值。

我试图使Panel可滚动,但只是垂直(所以AutoScroll将无法工作,因为子控件超过左边缘必须)。

那怎么办?

答案

假设您正在使用winforms,默认面板组件不会为您提供禁用水平滚动组件的方法。解决方法是禁用自动滚动并自己添加滚动条:

ScrollBar vScrollBar1 = new VScrollBar();
vScrollBar1.Dock = DockStyle.Right;
vScrollBar1.Scroll += (sender, e) => { panel1.VerticalScroll.Value = vScrollBar1.Value; };
panel1.Controls.Add(vScrollBar1);

详细讨论here

另一答案

试试这个“仅”滚动垂直。 (自动滚动在接受更改之前必须为false)

mypanel.AutoScroll = false;
mypanel.HorizontalScroll.Enabled = false;
mypanel.HorizontalScroll.Visible = false;
mypanel.HorizontalScroll.Maximum = 0;
mypanel.AutoScroll = true;
另一答案

Panel有一个AutoScroll财产。只需将该属性设置为True,面板将在需要时自动添加滚动条。

另一答案

下面是实现自定义垂直滚动条的代码。这里重要的细节是通过计算添加到面板的控件占用的空间来了解何时需要滚动条。

panelUserInput.SuspendLayout();
panelUserInput.Controls.Clear();
panelUserInput.AutoScroll = false;
panelUserInput.VerticalScroll.Visible = false;

// here you'd be adding controls

int x = 20, y = 20, height = 0;
for (int inx = 0; inx < numControls; inx++ )
{
    // this example uses textbox control
    TextBox txt = new TextBox();
    txt.Location = new System.Drawing.Point(x, y);
    // add whatever details you need for this control
    // before adding it to the panel
    panelUserInput.Controls.Add(txt);
    height = y + txt.Height;
    y += 25;
}
if (height > panelUserInput.Height)
{
    VScrollBar bar = new VScrollBar();
    bar.Dock = DockStyle.Right;
    bar.Scroll += (sender, e) => { panelUserInput.VerticalScroll.Value =  bar.Value; };
    bar.Top = 0;
    bar.Left = panelUserInput.Width - bar.Width;
    bar.Height = panelUserInput.Height;
    bar.Visible = true;
    panelUserInput.Controls.Add(bar);
}
panelUserInput.ResumeLayout();

// then update the form
this.PerformLayout();
另一答案

添加到面板的样式代码如下:

<asp:Panel ID="myPanel" runat="Server" CssClass="myPanelCSS" style="overflow-y:auto; overflow-x:hidden"></asp:Panel>

以上是关于将垂直滚动条添加到面板的主要内容,如果未能解决你的问题,请参考以下文章

extjs 3.2 动态添加垂直滚动条

将垂直滚动条添加到 shinyjs 下拉按钮 - 闪亮

如果需要,带有换行和垂直滚动条的 Flexbox

如何将滚动条从工具箱附加到面板,使其相对于表单/面板展开?

如何将垂直滚动条添加到始终固定第一列的表中

垂直滚动条在树形面板中拖放后自动移动到顶部