今Windowsフォームアプリケーションの中のタイマー機能を使って1秒毎にラベルの背景色を変えるコードを書こうとしているのですが何回やってもうまくいきません。
いつも最後の所のしか色が変わらず
他の色が変わりません
そして色が変わるのはタイマーを止めると 止まるようにしたいです。
自分はラベルを配列に入れてfor文でやってみたんですけどできないです。
どんな風にやれば良いですか?
ラベルは12個使います。
C#
1 2namespace ルーレット 3{ 4 public partial class Form1 : Form 5 { 6 public Form1() 7 { 8 InitializeComponent(); 9 } 10 11 12 13 14 15 private DateTime countTimer = DateTime.Parse("00:00:00"); 16 private System.Windows.Forms.Label[] rlabel; 17 18 19 20 private void timer1_Tick(object sender, EventArgs e) 21 22 { 23 24 this.rlabel = new System.Windows.Forms.Label[12]; 25 rlabel[0] = this.label1; 26 rlabel[1] = this.label2; 27 rlabel[2] = this.label3; 28 rlabel[3] = this.label4; 29 rlabel[4] = this.label5; 30 rlabel[5] = this.label6; 31 rlabel[6] = this.label7; 32 rlabel[7] = this.label8; 33 rlabel[8] = this.label9; 34 rlabel[9] = this.label10; 35 rlabel[10] = this.label11; 36 rlabel[11] = this.label12; 37 38 39 40 for (int i = 0; i < 12; i++) { 41 if (i == 0) 42 { 43 rlabel[0].BackColor = Color.White; 44 rlabel[11].BackColor = Color.Black; 45 } else 46 { 47 rlabel[i].BackColor = Color.White; 48 rlabel[i - 1].BackColor = Color.Black; 49 } 50 51 } 52 53 54 55 } 56 57 private void button_start_Click(object sender, EventArgs e) 58 { 59 this.timer1.Enabled = true; 60 this.button_start.Visible = false; 61 this.button_stop.Visible = true; 62 63 64 65 } 66 67 private void button_stop_Click(object sender, EventArgs e) 68 { 69 this.timer1.Enabled = false; 70 this.button_start.Visible = true; 71 this.button_stop.Visible = false; 72 } 73 74 private void Form1_Load(object sender, EventArgs e) 75 { 76 77 } 78 } 79} 80
コードを提示しましょう
> rlabel[i].BackColor = Color.White;
> rlabel[i - 1].BackColor = Color.Black;
i == 5 のとき
rlabel[5].BackColor = Color.White;
rlabel[4].BackColor = Color.Black;
i == 6 のとき
rlabel[6].BackColor = Color.White;
rlabel[5].BackColor = Color.Black;
i は for 文によって一瞬で 5 から 6 に変化しますが、rlabel[5].BackColor が上書きされました。
rlabel[5] が Color.White である時間は短すぎて描画すらできません。
コードからは読み取れないのですが
ルーレットってことは一つのラベルだけが黒(もしくは白)になり、1秒おきに次のラベル…と回っていくイメージでしょうか?
それとも黒白黒白黒白…が白黒白黒白黒…になるイメージでしょうか??