gpt4 book ai didi

c# - Visual Studio 2013 : Please tell me what's wrong VC#中可视化模拟按钮点击的方法

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:36 28 4
gpt4 key购买 nike

这是我在表单类中的方法。我在我的按钮上使用自定义图像背景,我想更改它们以使它们看起来像动画:

 private void restaurantButton_Click(object sender, EventArgs e)
{

System.Threading.Thread.Sleep(75);
restaurantButton.BackgroundImage = Properties.Resources.buttonBackClicked;
System.Threading.Thread.Sleep(150);
restaurantButton.BackgroundImage = Properties.Resources.buttonBack;
}

如果我给它一个单一的改变,动画就会发生。上面的代码似乎没有做任何事情。请帮忙,如果可以的话,建议另一种在 VC# (VS2013) 中手动设置动画控件(即控制图像、点击时间等)的方法。

最佳答案

问题是您阻塞了 UI 线程并且不允许它更新。您在这里只使用一个线程,同一线程恰好是对您的 UI 进行视觉更新的线程。因此,如果您让正在更新 UI 的线程进入休眠状态,它就不会更新(因为它处于休眠状态)。

要解决这个问题,你需要在一个单独的线程上异步等待。 .Net 4.5 中引入的 async/await 关键字将使这变得非常容易,请参见下面的代码:

private async void restaurantButton_Click(object sender, EventArgs e)
{
await Task.Delay(75);
restaurantButton.BackgroundImage = Properties.Resources.buttonBackClicked;
await Task.Delay(150);
restaurantButton.BackgroundImage = Properties.Resources.buttonBack;
}

当你调用 await 时,实际发生的是当前线程正在被释放(freed),而 Task.Delay 正在另一个线程上执行。当第二个线程完成时(在本例中为等待),它会向您的主线程发信号以继续。

关于c# - Visual Studio 2013 : Please tell me what's wrong VC#中可视化模拟按钮点击的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29756172/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com