winForm窗体的button按钮单击事件失效

筱疯 2012-04-01 12:54:51
有一个timer控件,每秒钟刷新一次窗体,窗体上有一个button按钮,Text="暂停",当点击按钮时可能不立即执行click事件,需要点击2-3次才执行click事件,有时候点击一次就执行了。费解!!!求助!!!!!!!!..
...全文
1313 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
mingcsharp 2012-04-01
  • 打赏
  • 举报
回复
这个不好说,上代码
HBXFHT 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
主要是因为ui操作与你的定时刷新窗口事件都是通过主线程来执行的,如果窗口频繁刷新会导致其他操作不能及时执行,所以最好的方式是通过开一线程来解决这种问题。
楼主可参照这篇文章,可能会有些帮助
http://www.360doc.com/content/10/0831/15/2917290_50145639.shtml
[/Quote]

这个分析有道理....
kid_wang 2012-04-01
  • 打赏
  • 举报
回复
Button的事件频率还没有你那个Timer来的快,所以你点击Button的时候,运气好在Timer空闲的时候,就触发,否则都让Timer的Tick事件截获了。
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

主要是因为ui操作与你的定时刷新窗口事件都是通过主线程来执行的
[/Quote]

是的!
lhonyun_lhy 2012-04-01
  • 打赏
  • 举报
回复
CheckCombinationService();
个方法里面是什么? 我试了试 没出问题啊
dd_zhouqian 2012-04-01
  • 打赏
  • 举报
回复
主要是因为ui操作与你的定时刷新窗口事件都是通过主线程来执行的,如果窗口频繁刷新会导致其他操作不能及时执行,所以最好的方式是通过开一线程来解决这种问题。
楼主可参照这篇文章,可能会有些帮助
http://www.360doc.com/content/10/0831/15/2917290_50145639.shtml
bindofn 2012-04-01
  • 打赏
  • 举报
回复
你自己一秒钟刷次屏,你点的时候肯定经常点不到啊,多线程才行,相当于showdialog窗体的时候,不能点击到原来的窗体,一个道理,你把时间调长点,就能调了
cheng2005 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 5 楼 的回复:
自己下个断点,学会自己调试。

button都没触发事件,怎么调试啊??
[/Quote]
你把主线程给占用了,当然点击没反应了。
yuzan0123 2012-04-01
  • 打赏
  • 举报
回复
这个与你的timer控件应该有很大的关系,每秒刷新会影响事件的触发
筱疯 2012-04-01
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
自己下个断点,学会自己调试。
[/Quote]
button都没触发事件,怎么调试啊??
cheng2005 2012-04-01
  • 打赏
  • 举报
回复
自己下个断点,学会自己调试。
cnwin 2012-04-01
  • 打赏
  • 举报
回复
应该需要线程处理
筱疯 2012-04-01
  • 打赏
  • 举报
回复

private void CombinationCheckService_Load(object sender, EventArgs e)
{
this.timer.Interval = Convert.ToInt32(ConfigurationManager.AppSettings["timerSeconds"]) * 60;
this.timer.Start();
}
private void timer_Tick(object sender, EventArgs e)
{
CheckCombinationService();
}
private void btnCloseOrOpen_Click(object sender, EventArgs e)
{
if (btnCloseOrOpen.Text == "全部暂停")
{
this.timer.Stop();
btnCloseOrOpen.Text = "全部开启";
}
else
{
this.timer.Start();
btnCloseOrOpen.Text = "全部暂停";
}
}

今儿没调休的?
筱疯 2012-04-01
  • 打赏
  • 举报
回复
private void CombinationCheckService_Load(object sender, EventArgs e)
{
this.timer.Interval = Convert.ToInt32(ConfigurationManager.AppSettings["timerSeconds"]) * 60;
this.timer.Start();
}
private void timer_Tick(object sender, EventArgs e)
{
CheckCombinationService();
}
private void btnCloseOrOpen_Click(object sender, EventArgs e)
{
if (btnCloseOrOpen.Text == "全部暂停")
{
this.timer.Stop();
btnCloseOrOpen.Text = "全部开启";
}
else
{
this.timer.Start();
btnCloseOrOpen.Text = "全部暂停";
}
}

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧