更改停靠的滚动条间距/边距

时间:2015-08-21 01:14:25

标签: c# winforms scrollbar

对于我正在编写的当前自定义winforms控件,我需要停靠自己的水平和垂直滚动条。我的右下角的控件间距有点问题。这是问题的图片:

enter image description here

以下是我想看到的内容:

enter image description here

注意控件之间的差距?水平和垂直滚动条都对接到面板,一个到底部,一个到右边。我尝试设置保证金,但似乎根本没有效果。我还将声明我不能使用预构建的scrollpanel,因为我使用的是OpenTK GLControl作为主要的小部件/控件。我需要自己专用的滚动条。我也没有使用Visual Studio表单构建器。

一些伪代码,不需要表达,但无论如何都是这样。

{
        HorizontalScrollBar = new HScrollBar();
        HorizontalScrollBar.Margin = new Padding(0, 0, 31, 0);
        HorizontalScrollBar.Dock = DockStyle.Bottom;
        VerticalScrollBar = new VScrollBar();
        VerticalScrollBar.Margin = new Padding(0, 0, 0, 31);
        VerticalScrollBar.Dock = DockStyle.Right;
}

---------- |更新| ----------

使用用户@Loathing提供的建议,我提出了这个解决方案:

        protected override void OnSizeChanged(EventArgs e)
        {
            base.OnSizeChanged(e);
            this.HorizontalScrollBar.MaximumSize = new Size(
                this.ClientSize.Width - 16,
                Int32.MaxValue);
            this.VerticalScrollBar.MaximumSize = new Size(
                Int32.MaxValue,
                this.ClientSize.Height - 16);
        }

这是现在的样子:

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以在父级更改时设置最大宽度,也可以编写自定义布局引擎。

protected override void OnSizeChanged(EventArgs e) {
    base.OnSizeChanged(e);
    hbar.MaximumSize = new System.Drawing.Size(this.ClientSize.Width - SystemInformation.VerticalScrollBarWidth, int.MaxValue);
}