请问button.Enabled = false;能真正防止多次点击吗

cs12356 2009-06-15 03:51:36
如果用户点击过快的话会否有意外,谢谢!

private void button5_Click(object sender, EventArgs e)
{
button5.Enabled = false;

。。。。。
}
...全文
410 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
c02645 2009-06-16
  • 打赏
  • 举报
回复
前台JS吧,后台回发防不住,我试过
daniel0301 2009-06-15
  • 打赏
  • 举报
回复
最好用JS来写。用JS来将BUTTON致灰
stan0714 2009-06-15
  • 打赏
  • 举报
回复
如果是CS 的,不会出现问题。

如果是BS 的,那么最好在后台加限定~~~
聖少俊 2009-06-15
  • 打赏
  • 举报
回复
学习
wjq 2009-06-15
  • 打赏
  • 举报
回复
即便是WinForm的也会有问题,特别是你后面的处理是很耗费资源的情况。
我建议,要么button5.Enabled = false; 后面加上
Application.DoEvents();
要么调用多线程来做后续操作。
不然后续操作很可能堵塞禁用按钮的操作,导致用户多次点击。
cs12356 2009-06-15
  • 打赏
  • 举报
回复
确实针对的是winform程序,大家都觉得不会出问题?
kevin_xu4365 2009-06-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yzy8788 的回复:]
不知道楼主的是Web还是winForm,要是WinForm的话倒还可以
如果是Web的话是不可以的,因为你这个按钮事件是在服务器端执行的,要是服务器端还没有来得及回发处理结果,实际上这个时候button还是可用的,用户照样可以再点击一次到多次。
解决思路:
用客户端js脚本控制,首先想到的是给按钮加上onclick事件:“this.disabled=true”,
试验证明这样貌似不可取,这样设置好像就提交不到服务器了。
在换一种思路
放一个隐…
[/Quote]


不错!
昕颖 2009-06-15
  • 打赏
  • 举报
回复
如果是C/S程序的话。这样是可以的。。如果你不放心的话可以做一些判断。。如是false的话。你可以提示用户吗。。message.show("不可用");
如果是B/s程序的话就采用6楼的解决方案吧。。
nihaimeiyoudenglu 2009-06-15
  • 打赏
  • 举报
回复
用以下的更好.刚刚写的..测试成功.
<div>
<asp:Button ID="btn" runat="server" Text="What time is it, please!" OnClientClick="return stop(this)"
OnClick="btn_Click" />
<br />
<asp:Label ID=Label1 runat=server></asp:Label>
</div>


<script type="text/javascript">
function stop(par)
{
setTimeout("$('#"+par.id+"').attr('disabled','disabled')",1);
return true;
}
</script>
jest850615 2009-06-15
  • 打赏
  • 举报
回复
private void button5_Click(object sender, EventArgs e)
{
button5.Enabled = false;

。。。。。
button5.Enabled = true;
}

那么在点击事件结束之前,按钮就不能点了
CeleryZeng 2009-06-15
  • 打赏
  • 举报
回复
方案很多嘛!
yzy8788 2009-06-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 nihaimeiyoudenglu 的回复:]
比较傻的方法
用js
放一个button然后放一个html的button,默认为禁用隐藏,点击button后,隐藏自身,显示那个html的button.
[/Quote]

听起来不错哦,也就说用户点击过button后,第二次看到的就是html的button了,偷梁换柱了
nihaimeiyoudenglu 2009-06-15
  • 打赏
  • 举报
回复
比较傻的方法
用js
放一个button然后放一个html的button,默认为禁用隐藏,点击button后,隐藏自身,显示那个html的button.
yzy8788 2009-06-15
  • 打赏
  • 举报
回复
不知道楼主的是Web还是winForm,要是WinForm的话倒还可以
如果是Web的话是不可以的,因为你这个按钮事件是在服务器端执行的,要是服务器端还没有来得及回发处理结果,实际上这个时候button还是可用的,用户照样可以再点击一次到多次。
解决思路:
用客户端js脚本控制,首先想到的是给按钮加上onclick事件:“this.disabled=true”,
试验证明这样貌似不可取,这样设置好像就提交不到服务器了。
在换一种思路
放一个隐藏域,给它的默认值设置成 0 : 如这样写:<input id="IsSubmited" name="IsSubmited" value="0" type="hidden"/><span id="SpanMsg" style="color:red;"></span>
然后给你的提交button5按钮加
btnLogin.Attributes.Add("onclick", "javascript:if(document.getElementById('IsSubmited').value==0){document.getElementById('IsSubmited').value=1;}else{document.getElementById('SpanMsg').innerHTML='正在提交中...';return false;}")
下面来分析一下这样做的可行性:如果隐藏域是0,则说明尚未提交,这个时候点击提交了,同时把这个隐藏域的值设置为1;如果这个时候服务器尚未回发的话,当用户再点击的时候就给用户一个提示,然后return false;就是点了也等于没点。当服务器回发的时候就是要刷新页面,刷新页面的时候就又把这个隐藏域变成0了。


说了这么多要是楼主问的不是web的,那我就哭啦。。。。
yyq136 2009-06-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 cs12356 的帖子:]
如果用户点击过快的话会否有意外,谢谢!

private void button5_Click(object sender, EventArgs e)
{
button5.Enabled = false;

。。。。。
}
[/Quote]

这样是肯定不行的
应该在button5客户端事件onclientclick事件中设置。
moonshineidolon 2009-06-15
  • 打赏
  • 举报
回复
写在前台,没等服务器返回时,按钮就不可用了
ralpha08 2009-06-15
  • 打赏
  • 举报
回复
[Quote=引用楼主 cs12356 的帖子:]
如果用户点击过快的话会否有意外,谢谢!

private void button5_Click(object sender, EventArgs e)
{
button5.Enabled = false;

。。。。。
}
[/Quote]

这样当然不能防止多次点机 在网络回传之前用户能点击几次了

angel6709 2009-06-15
  • 打赏
  • 举报
回复
private void button5_Click(object sender, EventArgs e)
button5.Enabled = false;
防止双击。。
if(button5.Enabled)
{
//要执行的内容,
}
}
forwin 2009-06-15
  • 打赏
  • 举报
回复
没发现有什么问题
难道你不可以?

110,566

社区成员

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

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

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