winform编程中,用线程修改控件的值,若该控件并非该线程创建的话,系统是不允许该线程修改控件的值的。
代码如下:
Thread myThread = new Thread(new ThreadStart(UpdateText));
myThread.IsBackGround=true;
myThread.Start();
delegate void UpdateEventHandle();
public void UpdateText(){
for(int i=0;i<10000;i++){
Thread.Sleep(1000);
if(richTextBox1.InvokeRequired)
richTextBox1.Invoke(new UpdateEventHandle(SetText));
else
SetText();
}
}
void SetText(){
richTextBox1.Text+=DateTime.Now.ToString();
}
---------------------------------------
总结,步骤如下:
1.首先定义一个委托,通过该委托来修改控件的值
2.定义一个线程入口方法,此处是UpdateText()方法.
3.定义事件处理方法,此处是SetText()方法.
在WinForm编程中,线程修改非自身创建的控件值时需要遵循特定规则。通常需要定义委托、线程入口方法和事件处理方法。通过检查InvokeRequired属性并使用Invoke调用来确保在正确的线程上更新控件,如richtextbox1的文本。
437

被折叠的 条评论
为什么被折叠?



