質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

1回答

3138閲覧

タイマーを使ってラベルの背景色を1秒毎に色を変更したい

nakatasu

総合スコア4

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2020/04/16 09:12

編集2020/04/17 01:57

今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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/04/16 09:14

コードを提示しましょう
Zuishin

2020/04/17 04:07

> 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 である時間は短すぎて描画すらできません。
TN8001

2020/04/17 07:38

コードからは読み取れないのですが ルーレットってことは一つのラベルだけが黒(もしくは白)になり、1秒おきに次のラベル…と回っていくイメージでしょうか? それとも黒白黒白黒白…が白黒白黒白黒…になるイメージでしょうか??
guest

回答1

0

提示のコードでは色が変わるようにはなってないように思えます
どういうふうに色が変わるのか、を説明できるでしょうか。

投稿2020/04/17 04:02

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/04/17 04:10

BackColor を変えると色が変わりませんか? 少なくとも最後のところは変わるそうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問