2017-12-28 21 views
0

약 10 초 동안 Windows 양식에서 "롤링 숫자"를 만들고 싶습니다.C# 롤링 번호 Windows 양식

나는 루프를 사용했지만 텍스트 라벨을 업데이트 할 때 새로 고침 (루프가 완료되면 양식이 멈추고 업데이트 됨)에 문제가 발생했습니다. 그것은 당신의 양식과 하나 개의 타이머에 나쁜 영어 ^^

+0

에 오신 것을 환영합니다. 도움말 센터 둘러보기 (https://stackoverflow.com/help/ –

+3

) UI 스레드에서 간단한 루프를 실행하면 끝날 때까지 전체 프로그램이 고정됩니다. "loop"코드를'BackgroundWorker'로 옮기거나'async' /'await'를 사용하여 백그라운드 스레드에서 코드를 실행하십시오. – Alejandro

+0

System.Windows.Forms.Timer를 사용할 때마다 다음 번 번호로 ​​UI를 새로 고치는 함수를 호출하면됩니다. 도구 상자에서 시간을 보내면 간단한 해결책이 될 것입니다. [관련] (https://stackoverflow.com/questions/6169288/execute-specified-function-every-x-seconds) –

답변

1

드래그 한 라벨에 대한

죄송합니다 (콘솔에서 만든)이 https://youtu.be/Q7JmiCAAqu0과 같은 경우

좋을 것입니다. 'InitializeComponent(); 뒤에 다음 코드를 삽입하십시오. 설명

 const int maximum = 100; 
     int actual = 0; 
     timer1.Interval = 100; 
     timer1.Enabled = true; 
     timer1.Tick += (sender, args) => 
     { 
      label1.Text = (actual++ % maximum).ToString(); 
     }; 

:

  • 라벨
  • 타이머가 동작을 수행하는 데 사용되는 회전 수를 표시하는 데 사용된다 (우리의 경우 100ms마다의 = 0.1 초)마다 N의 밀리 초
  • const int maximum = 100; // 표시 할 최대 수를 정의합니다.
  • int actual = 0; // 우리가 한 번에 표시하는 실제 숫자를 나타냅니다.
  • timer1.Interval = 100; // timer1.Tick이 호출 된 간격 (이 경우 100ms)
  • timer1.Enabled = true; // Tick을 호출하지 않고 타이머를 활성화합니다.
  • timer1.Tick + = (보낸 사람, args) => { label1.Text = (실제 ++ % 최대) .ToString(); // 텍스트를 다음과 같이 설정합니다. actual + 1 modulo 100 };

편집 : 모듈에 대한 정보 : 유래에 https://en.wikipedia.org/wiki/Modulo_operation

+0

덕분에 지금은 많이 일하고 : D 조 –