无法滚动到WinForm的底部

时间:2014-12-31 03:03:59

标签: c# winforms scroll

我正在使用visual studio 2012。基本上我有一个我想扩展的WinForm。

在表单设计器中,我能够看到我的表单有一个滚动条,但是当我编译程序时,滚动条不会出现。超出屏幕大小的控件将被剪掉,而不是使用滚动条。

我错过了哪些设置?目前我设置了AutoScroll = true。

4 个答案:

答案 0 :(得分:2)

当父控件将AutoScroll设置为true并且子控件具有MinimumSize以使子控件的客户端区域大于父控件的客户端区域时,会显示滚动条

E.g。

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    var sampleForm = new Form() { AutoScroll = true };

    Panel panel = new Panel() { BackColor = Color.Red, AutoSizeMode = AutoSizeMode.GrowAndShrink, AutoSize = true };
    Button btn = new Button { Text = "Toggle MinSize", AutoSize = true };
    panel.Controls.Add(btn);

    btn.Click += delegate {
        if (panel.MinimumSize == Size.Empty)
            panel.MinimumSize = new Size(600,600);
        else
            panel.MinimumSize = Size.Empty;
    };

    sampleForm.Controls.Add(panel);
    Application.Run(sampleForm);
}

如果您的子面板正确计算了其首选大小,则可以覆盖MinimumSize属性并返回PreferredSize

答案 1 :(得分:1)

AutoScroll = true足以在表单上显示滚动,无需其他设置。

尝试其他东西在窗体中添加面板并设置面板AutoScroll = true然后添加控件并检查滚动是否正常工作?

答案 2 :(得分:1)

查看要为其自动滚动工作的容器中控件的属性。一种可能性是您将一个或多个控件的Anchor属性设置为Right或者其他东西,这可以反转场景后面的自动滚动设置以有效地将其关闭。还要检查容器的RightToLeft属性,并尝试将其设置为默认值“no”

答案 3 :(得分:1)

确保已将Dock.Fill设置为Dock属性为Fill 设置属性 AutoScroll = true,AutoSize = true,AutoSizeMode = GrowOnly ,您也可以通过向窗体添加面板并设置面板AutoScroll = true来完成此操作。 将您的问题与示例here

进行比较