代码之家  ›  专栏  ›  技术社区  ›  shingo

HScroll/VScroll在ScrollableControl中有什么用途?

  •  9
  • shingo  · 技术社区  · 8 年前

    ScrollableControl类有两个受保护的布尔属性:HScroll和VScroll。

    document 说:

    class MyScrollableControl : ScrollableControl {
        public MyScrollableControl() {
            this.AutoScroll = false;
            this.HScroll = true;
        }
    }
    

    如果我使用以下代码,它可以工作:

    this.HorizontalScroll.Visible = true;
    

    this.AutoScroll = false;
    this.HScroll = true;
    this.HorizontalScroll.Visible = true;
    

    那么,HScroll和VScroll的真正用途是什么?


    使现代化

    我的代码和测试

    enter image description here

    3 回复  |  直到 8 年前
        1
  •  6
  •   ASpirin    8 年前

    HScroll 属性不会直接影响滚动可见性,但它 防止隐藏滚动 具有 HorizontalScroll.Visible 价值

    enter image description here

    设置为 true (见表中第2行)

    如果在什么时候 AutoScroll 始终保持不变 HScroll公司 没有任何影响(见最后2行)

    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();
    }
    

    false )

    手动显示滚动集

    手动隐藏滚动集 HScroll公司 然后

    用法(自动滚动= )

    水平滚动。看得见的 真的 而且无法更改

    不会影响任何事情

    enter image description here

        2
  •  3
  •   Hans Passant    8 年前

    那么,HScroll和VScroll的真正用途是什么?

    当你有 打算 显示滚动条。但这还不够,你还必须说明它们应该显示什么。滚动条需要知道拇指大小、最小和最大位置以及当前位置。

    你在与内部进行斗争 ApplyScrollbarChanges() method

    1. 如果控件具有非默认布局,则它允许该控件的布局引擎确定滚动边界。这仅适用于FlowLayoutPanel和TableLayoutPanel控件。
    2. 如果控件具有默认布局,则它迭代子控件以查看其边界。

    这使得项目1可以控制滚动条。属性设置器看起来 like this . 是的,它偷偷地将AutoScroll属性设置回true:)

        3
  •  2
  •   Bejasc    8 年前

    HScroll 将显示水平滚动条是 AutoScroll

    设置为false,隐藏任何滚动条的显示。

    推荐文章