gpt4 book ai didi

c# - 从 C# WinForm 应用程序中的循环更改标签背景色

转载 作者:行者123 更新时间:2023-11-30 14:06:37 24 4
gpt4 key购买 nike

我的应用程序中有一系列标签-

    Label[] labels = new Label[8];      

我想按顺序改变循环中那些的背景颜色-

    private void btnPrepare_Click(object sender, EventArgs e)
{
Application.DoEvents();
for (int i = 0; i < 8; i++)
{
labels[i].BackColor = System.Drawing.Color.Red;
System.Threading.Thread.Sleep(2000);
}
}

但是所有的变化都是一起出现的,而不是按顺序出现的。

有什么帮助吗?

最佳答案

这样说(快速修改):

private void btnPrepare_Click(object sender, EventArgs e) { 
//DONE: foreach - no magic numbers (8)
foreach (var lbl in labels) {
lbl.BackColor = System.Drawing.Color.Red;
lbl.Update(); // <- Update == force label repainting

System.Threading.Thread.Sleep(2000);
}
}

Application.DoEvents()邪恶的:它翻译所有事件,例如,关闭,当您只想绘画时。

更好的方法是使用Task而不是Thread:

// async: we're going to put await in the method
private async void btnPrepare_Click(object sender, EventArgs e) {
//DONE: foreach - no magic numbers (8)
foreach (var lbl in labels) {
lbl.BackColor = System.Drawing.Color.Red;

// await: No need in force repainting, messages translating etc.
await Task.Delay(2000);
}
}

关于c# - 从 C# WinForm 应用程序中的循环更改标签背景色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46662159/

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