短时间更改按钮颜色

 mobiledu2502926273 发布于 2023-01-11 09:25

我想将按钮的背景颜色更改为几秒钟,然后将其更改为正常.由于某种原因,它根本无法工作,我必须等待那些秒,我测试的一些东西也可以工作,但backgroundcolor没有改变.这是我到目前为止所尝试的:

private void button1_Click(object sender, EventArgs e)
{
    button1.BackColor = Color.Lime;
    Thread.Sleep(2000);
    button1.BackColor = SystemColors.Control;
}

希望有人可以帮助我解决这个问题!

1 个回答
  • 正如Horaciux所提到的,您可以使用Timer对象来执行此操作.

    或者,你可以使用awaitTask.Delay,正如Jon Skeet在这个答案中提到的那样.

    private async void button1_Click(object sender, EventArgs e)
    {
        button1.BackColor = Color.Lime;
        await Task.Delay(2000);
        button1.BackColor = SystemColors.Control;
    
    }
    

    问题Thread.Sleep在于它是一个阻塞操作 - 因为它会阻止有问题的线程上发生的任何事情.还有其他问题 - 主要是Thread.Sleep不保证在指定的时间内重新激活线程.当你执行时Thread.Sleep,你基本上告诉CPU你的线程不需要在指定的时间内处于活动状态 - 但是,CPU只保证它不会在那个时候处理它 - 它不保证它会此时重新激活,仅在睡眠期后的某个时刻(一旦完成处理当前活动的任何其他线程).

    由于您要添加Thread.Sleep到UI线程,因此您可以在睡眠期间有效地锁定整个应用程序.await Task.Delay另一方面,不会阻塞线程,但一旦完成任务await(在本例中为Delay动作),将返回函数中的那行代码.这允许所有其他方法继续正常运行(按钮点击将正常工作等).此方法的另一个优点是将所有相关代码保存在一个位置,而不是将其中的一部分保存在不同的方法中.

    2023-01-11 09:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有