

プログラミング初心者です。

visual studio2012を使用し、textbox5～9に矢印を表示し、表示された順番にボタンを押す脳トレゲームを作りたいと考えています。

timerを使用し、等間隔にtextboxの前景色をwhiteからblackに変える処理を実行するため、以下のように入力したのですが、どうしても一度で処理が行われてしまいます。

[code]

    Do Until (TextBox5.ForeColor = Color.Black) And (TextBox6.ForeColor = Color.Black) And (TextBox7.ForeColor = Color.Black) And (TextBox8.ForeColor = Color.Black)
                Timer1.Enabled = True
                TextBox5.ForeColor = Color.Black
                TextBox6.ForeColor = Color.Black
                TextBox7.ForeColor = Color.Black
                TextBox8.ForeColor = Color.Black
            Loop
            Timer1.Enabled = False
    
[/code]

これだけでは無理だということはわかるのですが、どうすれば等間隔に色が変わるのかがわかりません。

ほかにも、処理の部分にor文を使用(当然実行もされませんでした)、「もしtextbox5~9がwhiteなら」というif文に変更するなど、思いつく限り実行したのですが、現状は変わらずです。

timerの使い方等が間違っているのかとも思いましたが、エラーは一切出ておらず、検索しても参考になるものが見当たらなかったため、投稿させていただきました。  
至らぬ点ばかりだとは思いますが、よろしくお願いします。


CC BY-SA 4.0
2018-09-05T03:56:39.210
48101
2018-09-05T04:40:27.303
2018-09-05T04:40:27.303
9820
29984
question
visual-studio vb.net
等間隔なtextboxのForeColorの変更


やりたいことは下記のサンプルコードのような処理でしょうか。  
タイマーは`Tick`イベントに書かれた処理を等間隔のタイミングで実行します。  
`Do Until`のループでは中に書かれている処理を一気に行いますので、質問にある動作となります。

`If`文の`And`や`Or`の使い方、そしてタイマーの使い方、プロシージャの処理について、学習した内容が多くて混乱しているのかも知れませんね。  
実装したい全ての機能をまとめて追加するよりも、少しずつコードを加えて動作を確認しながら機能を追加していく方が、開発や理解の速度が上がると思います。

[code]

    Public Class Form1
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            'タイマー開始
            Timer1.Enabled = True
    
        End Sub
    
        Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
            Dim textCursors = New TextBox() {TextBox5, TextBox6, TextBox7, TextBox8} '色を変えるカーソル用テキストボックスの配列
            'TextBox5～TextBox8の文字色を順番にチェックし、文字色が黒くない先頭の項目を変更する
            For Each textBox In textCursors
                If textBox.ForeColor <> Color.Black Then
                    textBox.ForeColor = Color.Black
                    Exit For
                End If
            Next
            '全てのテキストボックスについて色を変え終わったらタイマー終了
            If textCursors.Last.ForeColor = Color.Black Then
                Timer1.Enabled = False
            End If
        End Sub
    End Class
    
[/code]


CC BY-SA 4.0
2018-09-05T04:38:29.277
48103
2018-09-05T04:38:29.277
9820
48101
answer