短时间改变按钮颜色我想把一个按钮的背景颜色改成几秒钟,然后再改回正常。出于某种原因,它根本不起作用,我必须等待那几秒钟,我测试过的一些东西也起作用,但背景颜色没有改变。到目前为止,这是我尝试过的:privatevoidbutton1_Click(objectsender,EventArgse){button1.BackColor=Color.Lime;线程.睡眠(2000);button1.BackColor=SystemColors.Control;希望有人能帮我解决这个问题!你需要一个计时器。将工具箱中的计时器控件添加到窗体。双击它添加一个定时器滴答事件处理程序privatevoidbutton1_Click(objectsender,EventArgse){button1.BackColor=Color.Lime;//以毫秒为单位设置滴答之间的时间.timer1.Tick=2000;//启动定时器,你的程序继续正常执行timer1.Start;//如果你使用sleep(2000)你的程序停止工作两秒钟。}//这个事件在Tick中设置的每一次(从开始到停止)都会上升privatevoidtimer1_Tick(objectsender,EventArgse){//执行到这里,表示已经过了2秒。停止计时器并改变颜色timer1.Stop;button1.BackColor=SystemColors.Control;正如Horaciux提到的,您可以使用Timer对象来执行此操作。或者,您可以使用await和Task.Delay,如JonSkeet在此答案中所述。privateasyncvoidbutton1_Click(objectsender,EventArgse){button1.BackColor=Color.Lime;等待任务。延迟(2000);button1.BackColor=SystemColors.Control;Thread.Sleep的问题在于它是一个阻塞操作——因为它会阻塞相关线程上发生的任何事情。还有其他问题——主要是Thread.Sleep不保证在指定时间内重新激活线程。当你执行Thread.Sleep时,你基本上告诉CPU你的线程不需要在指定的时间内处于活动状态-但是,CPU只保证它不会在那个时候处理它-它不会'不保证它会在那个时候被重新激活,只有在睡眠期之后的某个时间点(一旦它完成处理当前活动的任何其他线程)。由于您要将Thread.Sleep添加到UI线程,因此您可以在睡眠期间有效地锁定整个应用程序。另一方面,awaitTask.Delay不会阻塞线程,但一旦等待的任务完成(在本例中为Delay操作),它将返回到函数中的那一行代码。这允许所有其他方法继续正常运行(单击按钮将正常工作等)。这种方法的另一个优点是将所有相关代码保存在一个地方,而不是将部分代码保存在不同的方法中。或者,如果您使用XAML技术,则可以使用Storyboard。我不会发布实施细节,因为它们可能因目标技术而异。以上就是C#学习教程的全部内容:短时间改变按钮的颜色。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
