Re: [問題] 跨執行緒快速更新UI的問題

作者: pkmu8426 (巴426)   2015-05-19 18:21:37
※ 引述《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();
}
}
作者: pkmu8426 (巴426)   2015-05-19 18:25:00
呼叫set_textbox
作者: james732 (好人超)   2015-05-19 20:07:00
雖然你給的答案好像不是我需要的,但還是謝謝你的回答:)

Links booklink

Contact Us: admin [ a t ] ucptt.com