作者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://www.ptt.cc/bbs/C_Sharp/M.1432030904.A.6A0.html
→ pkmu8426: 呼叫set_textbox 05/19 18:25
※ 編輯: pkmu8426 (59.126.254.103), 05/19/2015 19:09:53
推 james732: 雖然你給的答案好像不是我需要的,但還是謝謝你的回答:) 05/19 20:07