1

目盛りごとにラベルのテキストを変更するタイマーがあります。なんらかの理由で、停止し、ループを続行しません。なんで?

        private int count = 0;
    private void timer1_Tick(object sender, EventArgs e)
    {
            string[] arr4 = new string[3]; // 4 
            arr4[0] = "one";
            arr4[1] = "two";
            arr4[2] = "three";

            if (count == 4)
            {
                count = 0;
            }
            toolStripStatusLabel1.Text = arr4[count];
            count++;
    }
4

1 に答える 1

1

また、フォームが読み込まれると、ラベルのテキストが空白になります。その後、arr4[0] に移動します。再びループすると、テキストは arr[0] から始まります。最初にテキストが空白になるのはなぜですか?どうすれば修正できますか?

元の質問はコメントで回答されたようです。コメントからの 2 番目の質問にお答えします。

プログラムtimer1_Tickの開始時にイベントがすぐに実行されない。あなたの場合、最初に実行されるのは5000ミリ秒後です。したがって、ラベルは最初は空白で表示され、次に arr4[0] の値に変更されます。それを望まない場合は、次のことができます。

  • デザイン時にデザイナーでラベルの値を設定する
  • 実行時にコンストラクターでラベルの値を設定します
  • 配列の作成をタイマーティックイベントから引き出して、5秒ごとに再作成しないようにし、それをクラス変数にして、コンストラクターで作成し、作成直後にラベルを arr4[0] に設定します
于 2012-06-30T03:42:26.667 に答える