shi*_*ngo 9 c# winforms scrollable
ScrollableControl类有2个受保护的布尔属性:HScroll和VScroll.
正如文件所说:
获取或设置一个值,该值指示水平滚动条是否可见.
和
AutoScroll自动保持滚动条的可见性.因此,启用AutoScroll时,将HScroll或VScroll属性设置为true无效.
所以我像这样使用它们,但滚动条没有显示:
class MyScrollableControl : ScrollableControl {
public MyScrollableControl() {
this.AutoScroll = false;
this.HScroll = true;
}
}
Run Code Online (Sandbox Code Playgroud)
如果我使用以下代码,它的工作原理:
this.HorizontalScroll.Visible = true;
Run Code Online (Sandbox Code Playgroud)
当我把它们放在一起时,滚动条仍然是不可见的,并且HScroll和HorizontalScroll.Visible的值保持为False.
this.AutoScroll = false;
this.HScroll = true;
this.HorizontalScroll.Visible = true;
Run Code Online (Sandbox Code Playgroud)
那么HScroll和VScroll的真正用途是什么?
更新
我的代码和测试
HScroll
属性不会直接影响滚动的知名度,但它阻止滚动到隐藏与HorizontalScroll.Visible
价值
如果HorizontalScroll.Visible
设置为true
than HScroll
也会获得一个值true
(参见表中的第2行)
如果AutoScroll
设置为true,则HorizontalScroll.Visible
始终保持true
并且HScroll
没有任何影响(参见最后2行)
使用包含3个带下一个处理程序代码的按钮创建一个应用程序,并使用它来查看那里到底发生了什么:
private void button1_Click(object sender, EventArgs e)
{
AutoScroll = !AutoScroll;
SetValues();
}
private void button3_Click(object sender, EventArgs e)
{
HScroll = !HScroll;
SetValues();
}
private void SetValues()
{
button1.Text = $"Auto: {(AutoScroll ? "On" : "Off")}";
button3.Text = $"HScroll: {(HScroll ? "On" : "Off")}";
button2.Text = $"Visible: {(HorizontalScroll.Visible ? "On" : "Off")}";
}
private void button2_Click(object sender, EventArgs e)
{
HorizontalScroll.Visible = !HorizontalScroll.Visible;
SetValues();
}
Run Code Online (Sandbox Code Playgroud)
false
)要手动显示滚动设置HorizontalScroll.Visible
为true
手动隐藏滚动设置HScroll
,以false
比HorizontalScroll.Visible
对false
true
)HorizontalScroll.Visible
永远true
不会改变
HScroll
不会影响任何事情