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

从C#WinForm应用程序中的循环更改标签背景颜色,第1张

概述我的应用程序中有一系列标签 – Label[] labels = new Label[8]; 我想按顺序改变循环中那些的背景颜色 – private void btnPrepare_Click(object sender, EventArgs e) { Application.DoEvents(); for (int i = 0; i < 8; i++) 我的应用程序中有一系列标签 –

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 methodprivate 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#WinForm应用程序中的循环更改标签背景颜色全部内容,希望文章能够帮你解决从C#WinForm应用程序中的循环更改标签背景颜色所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1220498.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存