切换控制backColor快速

时间:2012-04-03 15:49:26

标签: c# backgroundworker

此代码仅更改bg颜色一次。为了让它工作,我需要添加什么?

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

1 个答案:

答案 0 :(得分:2)

即使你将sleep参数更改为更大的值,如果你在表单运行的同一个线程(主线程)上运行,你也不会看到任何改变,因为你阻塞了主线程;相反,你应该使用另一个线程或只使用Windows窗体的Timer组件。

    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;
    }