2017-12-18 270 views
0

我必须为流布局面板项目创建向上和向下按钮垂直滚动。我该怎么办?我会为POS做这个表格。如何在c#中为流布局面板创建自定义滚动按钮#

我这样做,但它不工作:我有很多按钮,他们有87尺寸高度:我添加了代码和图片。

flowlayoutexample

private void btnScrollUp_Click(object sender, EventArgs e) 
    { 


     flowLayoutPanel1.VerticalScroll.Value = flowLayoutPanel1.VerticalScroll.LargeChange-1 ; 
     flowLayoutPanel1.PerformLayout(); 



    } 

    private void btnScrollDown_Click(object sender, EventArgs e) 
    { 


     flowLayoutPanel1.VerticalScroll.Value = flowLayoutPanel1.VerticalScroll.LargeChange+ 1; 
     flowLayoutPanel1.PerformLayout(); 


    } 
+0

的这不起作用的关键原因之一是你用=代替+ =/- =,但该值的财产行为奇怪与+ =无论如何,看到我的答案下面的一个完整的答案,修复你在这里做了什么:) – chrispepper1989

+0

出于兴趣你为什么要在代码中做它?为什么不使用flowLayoutPanel1.AutoScroll = true; flowLayoutPanel1.VerticalScroll.Visible = true; – chrispepper1989

+1

因为这个程序将使用触摸屏机。所以我必须把大按钮滚动:) –

回答

1

或者你可能只是想设置“自动滚动”假下面的代码实现适当的编程滚动:

public Form1() 
    { 
     InitializeComponent(); 
     flowLayoutPanel1.AutoScroll = false; 

    } 

    public int scrollValue = 0; 
    public int ScrollValue 
    { 
     get 
     { 


      return scrollValue; 
     } 
     set 
     { 
      scrollValue = value; 

      if (scrollValue < flowLayoutPanel1.VerticalScroll.Minimum) 
      { 
       scrollValue = flowLayoutPanel1.VerticalScroll.Minimum; 
      } 
      if (scrollValue > flowLayoutPanel1.VerticalScroll.Maximum) 
      { 
       scrollValue = flowLayoutPanel1.VerticalScroll.Maximum; 
      } 

      flowLayoutPanel1.VerticalScroll.Value = scrollValue; 
      flowLayoutPanel1.PerformLayout(); 

     } 
    } 
    private void Add_Control(object sender, EventArgs e) 
    { 
     flowLayoutPanel1.Controls.Add(new Button(){Width = flowLayoutPanel1.Width, Height = 87}); 
    } 

    private void UpClick(object sender, EventArgs e) 
    { 
     ScrollValue -= flowLayoutPanel1.VerticalScroll.LargeChange; 

    } 

    private void DownClick(object sender, EventArgs e) 
    { 
     ScrollValue += flowLayoutPanel1.VerticalScroll.LargeChange; 
    } 
+0

嗨@ chrispepper1989它不工作,它给这个问题{“110的价值'''价值'无效。 '值'应介于'最小'和'最大'之间。\ r \ n参数名称:值“} –

+0

请参阅修改后的代码,以添加保护措施:) – chrispepper1989

+0

ps你可能也想检查一下你的“flowLayoutPanel1.VerticalScroll.LargeChange”设置为什么。如果它设置为高到不仅会马上脱离最小/最大值,但你永远不会看到它移动:)将其设置为5或某事开始 – chrispepper1989