c# 跨线程 跨类改变控件text值
有一个窗体一个类点击窗体的按钮调用类里面的一个方法。类的方法要能修改窗体的label控件的text值100分求助在线等。委托啥的我都找过希望能有个高手给搞个demo出来到...
有一个窗体 一个类 点击窗体的按钮 调用 类里面的一个 方法。 类的方法要能修改 窗体的 label控件的text 值 100 分求助 在线等。 委托啥的 我都 找过 希望能有个 高手 给搞个 demo 出来到附件上。谢谢。
展开
3个回答
展开全部
不能直接跨线程访问控件的,需要用到委托,用如下方法就可以了,另外给你一个类,里面封装了一些常用方法可以使用。
delegate void SetTextDelegate(Control Ctrl, string Text);
/// <summary>
/// 跨线程设置控件Text
/// </summary>
/// <param name="Ctrl">待设置的控件</param>
/// <param name="Text">Text</param>
public static void SetText(Control Ctrl, string Text)
{
if (Ctrl.InvokeRequired == true)
{
Ctrl.Invoke(new SetTextDelegate(SetText), Ctrl, Text);
}
else
{
Ctrl.Text = Text;
}
}
展开全部
使用代理 看我代码
private delegate void deleTestlbl(System.Windows.Forms.TextBox d, string txt);
void lblDload(System.Windows.Forms.TextBox d, string txt)
{
if (!d.InvokeRequired)
{
d.Text = txt; // 主线程调用时,直接赋值
}
else
{
// 多线程调用时,通过主线程去访问
deleTestlbl de = lblDload;
this.Invoke(de, d, txt);
}
}
加入这两个方法,如果我要textbox1显示hello 直接调用方法lblDload(textbox,"hello");
private delegate void deleTestlbl(System.Windows.Forms.TextBox d, string txt);
void lblDload(System.Windows.Forms.TextBox d, string txt)
{
if (!d.InvokeRequired)
{
d.Text = txt; // 主线程调用时,直接赋值
}
else
{
// 多线程调用时,通过主线程去访问
deleTestlbl de = lblDload;
this.Invoke(de, d, txt);
}
}
加入这两个方法,如果我要textbox1显示hello 直接调用方法lblDload(textbox,"hello");
追问
线程的方法 需要是静态引用 - -
追答
试试吧 不就是多线程么?跨线程更改主线程控件属性,还什么静态引用
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/// <summary>
/// 跨线程设置当前测试项
/// </summary>
private void ThreadSetTestingInfo()
{
MethodInvoker In = new MethodInvoker(SetTestingInfo);
this.BeginInvoke(In);
}
/// <summary>
/// 设置当前测试详情
/// </summary>
private void SetTestingInfo()
{
string XX=通过类获取值
this.Text.Text = XX;
}
调用的时候,调用上面的方法,这其实就是个委托
/// 跨线程设置当前测试项
/// </summary>
private void ThreadSetTestingInfo()
{
MethodInvoker In = new MethodInvoker(SetTestingInfo);
this.BeginInvoke(In);
}
/// <summary>
/// 设置当前测试详情
/// </summary>
private void SetTestingInfo()
{
string XX=通过类获取值
this.Text.Text = XX;
}
调用的时候,调用上面的方法,这其实就是个委托
追问
线程 方法 需要的是 静态调用 不能 实例化。窗体的构造方法有很多初始化代码 。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询