作者pkmu8426 (巴426)
看板C_Sharp
标题Re: [问题] 跨执行绪快速更新UI的问题
时间Tue May 19 18:21:37 2015
※ 引述《james732 (好人超)》之铭言:
: 目前用Winform写一只小程式
: 上面有个Label与DataGridView
: 首先会开启一个新的执行绪,然後产生乱数值
: (实际使用时,这个值会从serial port读进来)
: 然後把这个值更新至Label与DataGridView上
: 并把DataGridView卷动到最下面
你好 我的用法如下 可以参考下面类似的作法
虽然我是textBox, 不过其实差不多, 大部份UI元件都可以实现。
重点是new Callback1的方式 和 this.invoke
else 依需求自己修正即可。
delegate void SetTextBoxCallback1(string text);
private void Set_textBox1(string s)
{
if (this.textBox1.InvokeRequired)
{
SetTextBoxCallback1 stbc = new
SetTextBoxCallback1(Set_textBox1);
this.Invoke(stbc, new object[] { s });
}
else
{
if (textBox1.Lines.Length > 20)
{ s_message = ""; this.textBox1.Text = ""; }
this.textBox1.Text = s;
this.textBox1.Select(textBox1.Text.Length, 0);
this.textBox1.ScrollToCaret();
}
}
--
就算这个世界不信任我
但我还是想相信这个世界
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.126.254.103
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1432030904.A.6A0.html
1F:→ pkmu8426: 呼叫set_textbox 05/19 18:25
※ 编辑: pkmu8426 (59.126.254.103), 05/19/2015 19:09:53
2F:推 james732: 虽然你给的答案好像不是我需要的,但还是谢谢你的回答:) 05/19 20:07