【发布时间】:2015-08-21 01:14:24
【问题描述】:
对于我正在编写的当前自定义 winforms 控件,我需要停靠我自己的水平和垂直滚动条。不过,我对右下角控件的间距有一个小问题。这是问题的图片:
这是我想看到的:
注意到控件之间的差距了吗?水平和垂直滚动条都停靠在面板上,一个在底部,一个在右侧。我尝试设置边距,但似乎根本没有效果。我还要声明我不能使用预建滚动面板,因为我使用 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);
}
这是它现在的样子:
【问题讨论】:
-
滚动条的高度/宽度将取决于计算机的 DPI。所以最好使用
SystemInformation类而不是硬编码值。 -
@Loathing 很高兴知道,谢谢。
-
@Loathing 不过,这似乎不适用于垂直滚动条位置。它再次出现在右下角。有什么想法吗?
-
@Loathing 等等,没关系,我修好了。我不需要减去 16 的偏移量。