2017-12-18 12 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

이 프로그램이 터치 스크린 machine을 사용하기 때문에. 스크롤을 위해 큰 버튼을 넣어야 만합니다. :) –

답변

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"가 설정되어 있는지 확인할 수도 있습니다. 만약 무언가가 높게 설정되어있을뿐만 아니라, 곧바로 최소/최대 값을 벗어나지 만 이동하지는 않을 것입니다. – chrispepper1989

0

이 코드는 당신이 달성 할 것하려고하는 스크롤의 유형은 무엇?

How to Programmatically Scroll a Panel

이것은 오히려 "부드러운"스크롤보다, 제어 당 스크롤 할 수 있지만이 응용 프로그램을 위해 작동 할 것이라는 점을 생각한다.