C#里面怎么在线程里触发按钮的click? 50

按钮的click事件已经写好了,但是现在在线程里想实现触发按钮的click,该怎么做?我记得按钮触发的可以这样写btnplay_Click(sender,e);或者是bt... 按钮的click事件已经写好了,但是现在在线程里想实现触发按钮的click,该怎么做?我记得按钮触发的可以这样写btnplay_Click(sender, e);或者是btnplay.PerformClick(); 但是在线程里就不知道该怎么处理,应该是要委托,求大神给个例子说明,在此膜拜! 展开
 我来答
创作者zUzVB1Sl31
2014-07-23 · 编程类资料、英语学习资料
创作者zUzVB1Sl31
采纳数:1331 获赞数:5975

向TA提问 私信TA
展开全部

你是触发事件,又不是委托事件,委托+触发:

private delegate void ClickEvent(EventArgs e);  //委托类型
private event ClickEvent click;
private void 按钮_Click(Object sender,EventArgs e)
{
   if(click!=null)
   {
      click(EventArgs e);
   }
}

触发他

click+=new EventHandler(你的事件);
包布丁
2014-06-17 · TA获得超过1358个赞
知道小有建树答主
回答量:1435
采纳率:25%
帮助的人:1225万
展开全部
建议你把Click事件中代码放到另一个不带参数的方法中去。
如果你需要直接调用btnplay_Click方法,可以直接传两个null进去:
btnplay_Click(null,null);
前提是sender和e你没有用到。
追问
现在关键是在线程怎么搞呢?
追答
若线程运行调用的方法和btnplay在同一类中的话,可以不用委托,直接调用好了。
btnplay.PerformClick(); //★
那么执行该方法的依然是新进程。如果你想要修改窗体上任意控件的状态的话,用
this.Invoke(new MethodInvoker(()=>{btnplay.PerformClick();})); //☆

否则用委托。把委托作为参数在线程thr的Start方法中传进去:
thr.Start((object)new MethodInvoker(()=>{
btnplay.PerformClick(); //★
}))
//(上面★一行可以换成整个一段☆)
线程方法threadMethod调用它:
void threadMethod(object clickDel)
{
Delegate ck = (Delegate)clickDel;ck();
// 其它工作
}
以上。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
拙眼的绅士
2014-07-23 · TA获得超过143个赞
知道小有建树答主
回答量:141
采纳率:0%
帮助的人:60万
展开全部
把click里面的代码打包到外面,然后调用那个函数,Invoke用法请出门百度:c# 跨线程 调用 函数,然后文库里面写的很清楚
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tystq
2014-07-23 · TA获得超过1201个赞
知道小有建树答主
回答量:943
采纳率:100%
帮助的人:831万
展开全部
btnplay_click(null, null);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式