Переключение управления backColor fast - PullRequest
0 голосов
/ 03 апреля 2012

Этот код меняет цвет только один раз.Что мне нужно добавить, чтобы это заработало?

 int i=0;
        while (i<50)
        {
            button1.BackColor = Color.White;
            Thread.Sleep(20);
            button1.BackColor = Color.Black;
            Thread.Sleep(20);
            i++;
        }

1 Ответ

2 голосов
/ 03 апреля 2012

Даже если вы измените аргумент sleep на что-то большее, если вы работаете в том же потоке, где работает форма (основной поток), вы не увидите никаких изменений, потому что блокируете основной поток;вместо этого вы должны либо использовать другой поток, либо просто использовать компонент Timer форм Windows.

    int i;
    public Form1()
    {
        InitializeComponent();            
        System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer();
        timer.Interval = 200;
        timer.Tick += new EventHandler(timer_Tick);
        this.BackColor = Color.White;
        timer.Start();
    }

    void timer_Tick(object sender, EventArgs e)
    {
        if (this.BackColor == Color.White)
            this.BackColor = Color.Black;
        else
            this.BackColor = Color.White;
    }
...