如果用户点击过快的话会否有意外,谢谢! private void button5_Click(object sender, EventArgs e)
{
button5.Enabled = false;。。
}
{
button5.Enabled = false;。。
}
解决方案 »
- Windows Service --Socket通讯,异常崩溃,一直找不到原因
- 急!!!!!!
- c# 关于析构函数
- 到底错在那里????
- 刚学C#.NET,有个问题不清楚,请教大家一下,谢谢了
- 请问如何打开小画家编辑picturebox里的图片?
- c#winform中GDI+画图,在panel上画,但每次下拉时重画怎么那么闪啊?用什么更好的解决办法没有?再线等
- 如何编码实现远程显示,监控其他计算机桌面?请高手帮忙!谢谢!
- 怎么用C# post 登陆http://my.37.com/login.html 这个网站
- C#高级编程--发表你的意见
- 急!!!帮忙把vb.net 语句改成C#语句 谢了
- 被难住了!
button5.Enabled = false;
防止双击。。
if(button5.Enabled)
{
//要执行的内容,
}
}
这样是肯定不行的
应该在button5客户端事件onclientclick事件中设置。
如果是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的,那我就哭啦。
用js
放一个button然后放一个html的button,默认为禁用隐藏,点击button后,隐藏自身,显示那个html的button.
听起来不错哦,也就说用户点击过button后,第二次看到的就是html的button了,偷梁换柱了
{
button5.Enabled = false;。。
button5.Enabled = true;
}那么在点击事件结束之前,按钮就不能点了
<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>
如果是B/s程序的话就采用6楼的解决方案吧。。
我建议,要么button5.Enabled = false; 后面加上
Application.DoEvents();
要么调用多线程来做后续操作。
不然后续操作很可能堵塞禁用按钮的操作,导致用户多次点击。