投稿者 太郎冠者  (社会人) 投稿日時 2009/8/26 01:25:07
>とのことですが、プロパティの値が変化しているのに、フォームに実際に反映されないということはスレッドがスリープ状態になっているからだということでしょうか?
違います。
フォームの外観が変化しないのは、BackColorプロパティを変更した後、変更された値での再描画が行われていないからです。
下記のようにすれば、一応タイトルの要件は満たすことができると思います。
PictureBox1.BackColor = Color.GreenYellow
PictureBox1.Refresh()   'PictureBox1を再描画させる 
System.Threading.Thread.Sleep(200)
PictureBox1.BackColor = Color.Gold


ただ、既に魔界の仮面弁士さんが言われてるように、これは良くないコーディングです。
Sleepは使わずにTimer.Tickイベントを使用して、例えば以下のように修正するといいです。
'TimerのIntervalを200に設定すれば200msごとに背景色が変化する 
Private Sub Timer1_Tick(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles Timer1.Tick

    If PictureBox1.BackColor = Color.GreenYellow Then
        '背景色がGreenYellowならGoldに変更 
        PictureBox1.BackColor = Color.Gold

    Else
        '背景色がGreenYellowではないならGreenYellowに変更 
        PictureBox1.BackColor = Color.GreenYellow

    End If

End Sub