C#隐藏面板滚动条

时间:2017-07-22 21:47:11

标签: c#

我正在尝试创建一个双按钮来滚动我的面板(向上和向下)

Picture Of My Form

我的Scroll DownButton

  private void button_Category_Down_Click(object sender, EventArgs e)
    {

            int CurrentVal = flowLayoutPanel_Categories.VerticalScroll.Value;


            if (value > CurrentVal)
            {
                value = CurrentVal - 75;
              return;
            }

            value += 70;

            flowLayoutPanel_Categories.AutoScrollPosition = new Point(0, value);


    }

向上滚动按钮

  private void button_Category_Up_Click(object sender, EventArgs e)
    {


            if (value <= 0)
            {
                value = 0;
                return;
            }

            value -= 75;

            flowLayoutPanel_Categories.AutoScrollPosition = new Point(0, value);

    }

我的代码工作正常但是如果面板属性[AutoScroll]设置为true

当autoscroll为true时,ScrollBar将为Visible

我如何拥有滚动条

我试过

      private const int SB_BOTH = 3;
    private const int WM_NCCALCSIZE = 0x83;

    [DllImport("user32.dll")]
    private static extern int ShowScrollBar(IntPtr hWnd, int wBar, int bShow);

    protected override void WndProc(ref Message m)
    {

        ShowScrollBar(flowLayoutPanel_Categories.Handle, SB_BOTH, 0 /*Hide the ScrollBars*/);


        base.WndProc(ref m);
    }

但它可能不起作用

如果我将autoscroll设置为false,按钮将不起作用

抱歉我的英语不好,谢谢

1 个答案:

答案 0 :(得分:0)

更新了Windows窗体的答案:

是的,所以我更新了我的anser来解决你的评论,你说这是一个Windows Forms项目,而不是像我根据你的模拟图像假设的UWP项目。

我现在能想到的唯一快速方法(实际上更像是一种解决方法)是将您的面板嵌入一个小于内容面板的容器中,使滚动条区域落在显示区域之外(请参见下图),或者只是在面板上放置另一个对象,使其覆盖滚动条区域。

enter image description here

请记住在您的程序支持的所有Windows版本中检查您的设计。某些Windows主题(即Windows 10)可以为滚动条保留更少或更多的空间,从而导致部分可见的滚动条或剪切的容器内容。还要看看当内容不需要滚动时会发生什么。在某些Windows版本的情况下,将滚动设置为自动可能会完全隐藏滚动条,因此如果内容填满面板,内容可能会被剪裁。

UWP解决方案:

在UWP Windows 10应用中,您可以右键单击设计器窗口中的对象&gt;编辑模板&gt;编辑副本并编辑所选组件的子组件上的外观 Edit appearance of an element by performing changes to its template

然后,您只需编辑滚动查看器组件,帽子应该是面板的一部分,并将Vetical滚动条设置为false。

Change properties of sub-objects, in this case Scrollviewer