对于我正在编写的当前自定义winforms控件,我需要停靠自己的水平和垂直滚动条。我的右下角的控件间距有点问题。这是问题的图片:
以下是我想看到的内容:
注意控件之间的差距?水平和垂直滚动条都对接到面板,一个到底部,一个到右边。我尝试设置保证金,但似乎根本没有效果。我还将声明我不能使用预构建的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);
}
这是现在的样子:
答案 0 :(得分:1)
您可以在父级更改时设置最大宽度,也可以编写自定义布局引擎。
protected override void OnSizeChanged(EventArgs e) {
base.OnSizeChanged(e);
hbar.MaximumSize = new System.Drawing.Size(this.ClientSize.Width - SystemInformation.VerticalScrollBarWidth, int.MaxValue);
}