c线程中访问控件
❶ C#如何在线程中访问控件对象
利用ListView.Invoke解决跨线程安全调用,关键代码如下:
voidFindFileInDir(){
if(listView2.InvokeRequired)
{
//跨线程调用
listView2.Invoke(newMethodInvoker(delegate
{
listView2.Items.Add(path);
}));
}
else
{
//直接调用
listView2.Items.Add(path);
}
}//EndofFindFileInDir
❷ c#子线程如何访问子窗体中的控件
控件声明成public
然后得到窗体的引用,直接可以访问。如果窗体不是在子线程中创建的,需要使用Invoke来访问。
❸ c# 跨线程访问控件
用委托,具体代码如下~:
public delegate void MyInvoke(string str);
private void button9_Click(object sender, EventArgs e)
{
//_myInvoke = new MyInvoke(SetText);
// = false;
Thread t = new Thread(new ThreadStart(fun));
t.Start();
}
private void fun()
{
//_myInvoke("dddd");
SetText("ddd");
}
private void SetText(string s)
{
if (textBox6.InvokeRequired)
{
MyInvoke _myInvoke = new MyInvoke(SetText);
this.Invoke(_myInvoke, new object[] { s });
}
else
{
this.textBox6.Text = s;
}
}