博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
多线程UI
阅读量:6199 次
发布时间:2019-06-21

本文共 1622 字,大约阅读时间需要 5 分钟。

遇到过要在工作线程中去更新UI以让用户知道进度,而在多线程中直接调用UI控件操作是错误的做法。

最后解决方法是将操作UI的代码封装,通过Invoke / BeginInvoke 去委托调用。

private void UpdatelblText(string str)        {            if (lblText.InvokeRequired)            {                lblText.Invoke(new Action
(UpdatelblText), str); } else { lblText.Text = str; } }

 或

private void ChangeColor(int row, string ShowColor, string InvoiceStatus, string PrintStatus)        {            if (dataGridView1.InvokeRequired)            {                this.Invoke(new Action
(ChangeColor), new object[] { row, ShowColor, InvoiceStatus, PrintStatus }); } else { if (ShowColor == "Green") { dataGridView1.Rows[row].DefaultCellStyle.BackColor = Color.Green; dataGridView1.Rows[row].DefaultCellStyle.ForeColor = Color.White; } else if (ShowColor == "Yellow") { dataGridView1.Rows[row].DefaultCellStyle.BackColor = Color.Yellow; dataGridView1.Rows[row].DefaultCellStyle.ForeColor = Color.Black; } else if (ShowColor == "Red") { dataGridView1.Rows[row].DefaultCellStyle.BackColor = Color.Red; dataGridView1.Rows[row].DefaultCellStyle.ForeColor = Color.White; } dataGridView1.Rows[row].Cells[2].Value = InvoiceStatus;//开票状态 dataGridView1.Rows[row].Cells[3].Value = PrintStatus;//打印状态 } }

 

转载地址:http://uxtca.baihongyu.com/

你可能感兴趣的文章
Invalidate、RedrawWindow与UpdateWindow的差别
查看>>
Linux中ifcfg-eth0配置参数说明
查看>>
Ubuntu安装搜狗输入法
查看>>
区块链技术以及少数服务多数的51%攻击
查看>>
微信小程序调用蓝牙功能控制车位锁
查看>>
单例模式
查看>>
Generate BKS File( Bouncy Castle KeyStore)
查看>>
网站性能压力测试工具--apache ab使用详解
查看>>
j_spring_security_check 404错误
查看>>
weblogic部署存在中文乱码导致部署失败
查看>>
总结获取原生JS(javascript)的父节点、子节点、兄弟节点
查看>>
qt 字体的相关问题
查看>>
IntelliJ Idea 集成svn 和使用
查看>>
goto语句引起的crosses initialization of XXX
查看>>
view.getParent()与view.getRootView()
查看>>
gSOAP 初体验
查看>>
算法-猴子搬香蕉
查看>>
Selenium自动化测试之学会元素定位
查看>>
用树莓派和DS18B20做个汽车温度记录仪
查看>>
grid++报表使用时注意事项
查看>>