在做winform程序时,在button按下,处理时,在点button就不好用了怎么做啊??我现在做的效果是
即使button不好用了,我点击button,等button好用了就马上又执行了button事件。好像记录了我button
的点击一样。求各位大虾指教。在button处理时所有的点击都无效???我现在做的是:
/// <summary>
/// 表示按钮処理
/// </summary>
private void BtnHyoJi_Click(object sender, EventArgs e)
{ // 連打処理:start
buttonHandle(0);
// 业务处理
CallTransaction(null, null); // 連打処理:end
buttonHandle(1);
} /// <summary>
/// 連打対応
/// </summary>
private void buttonHandle(int pattern)
{
switch (pattern)
{
case 0:
// 设置鼠标 并让button不好用
Cursor.Current = Cursors.WaitCursor;
BtnHyoJi.Enabled = false;
BtnPrint.Enabled = false;
break;
case 1:
// 让button好用,并设置鼠标
BtnHyoJi.Enabled = true;
BtnPrint.Enabled = true;
Cursor.Current = Cursors.Default;
break;
}
}
即使button不好用了,我点击button,等button好用了就马上又执行了button事件。好像记录了我button
的点击一样。求各位大虾指教。在button处理时所有的点击都无效???我现在做的是:
/// <summary>
/// 表示按钮処理
/// </summary>
private void BtnHyoJi_Click(object sender, EventArgs e)
{ // 連打処理:start
buttonHandle(0);
// 业务处理
CallTransaction(null, null); // 連打処理:end
buttonHandle(1);
} /// <summary>
/// 連打対応
/// </summary>
private void buttonHandle(int pattern)
{
switch (pattern)
{
case 0:
// 设置鼠标 并让button不好用
Cursor.Current = Cursors.WaitCursor;
BtnHyoJi.Enabled = false;
BtnPrint.Enabled = false;
break;
case 1:
// 让button好用,并设置鼠标
BtnHyoJi.Enabled = true;
BtnPrint.Enabled = true;
Cursor.Current = Cursors.Default;
break;
}
}
解决方案 »
- txt导入sql时汉字乱码
- C#如何去除PDF reader控件左边的书签
- WPF几个小问题
- c#发邮件的问题。。。求解。。。。在线等
- console.writelin()问题简单哦!
- datagridview对新增列可编辑,其余列不可编辑,单击列头排序后打乱只读状态
- linq DataSet group 多字段 出现:必须至少有一个对象实现 IComparable 的错误。请我应该怎样解决??
- C#存储过程的调用
- 两个窗体间传递数据,直接传DataSet的方式好吗?用那种方式比较好?
- 在英文操作系统下 所有控件字体变形问题
- 新手 关于asp.net网页里加视频和文档的问题
- datatable创建行,并为行赋值(列已固定)
用linkbotton
-------------------------------------
public int Pages
{
get { return int.Parse(ViewState["page"].ToString()); }
set { ViewState["page"] = value; }
}
当你用的时候
pages+1;
不用的时候pages-1;
然后用switch(pages)
{BtnHyoJi.Enabled = false;
BtnPrint.Enabled = false;
}
等你所有的操作完成之后再设置成真
再看下你这个方法是不是多线程的
// 业务处理
CallTransaction(null, null);如果是的话不应该在这里设置成真
buttonHandle(1);
应该在这个线程结束之后!
这个也容易啊
在执行方法前将botton的Enable设置为false
相当于这样
public void AA_Click(object sender, EventArgs e)
{
//开始将Enable设置为false
........
//结束了再设置为true就好了撒
}
b = true;
button1.Enabled = false;
for (int i = 0; i < 10;i++ )
{
this.Text = DateTime.Now.ToString();
Application.DoEvents();
Thread.Sleep(100);
}
button1.Enabled = true;
大概是你的主线程死循环时没办法响应外部消息,所以其他消息被阻塞了,等到循环结束时外部消息可以被处理,但此时button1.Enabled = true;所以又被执行一次吧
我想可不可以用 Api 记录你的鼠标按键及事件回应信息呢,把没有回应的次数记录下来
然后调用相应的事件处理,把消息发出去,就相当于延时点击了。
有点复杂,先提个建议,看是否可行。
把这句放在线程里执行
if (button1.enable==true)
CallTransaction(null, null);
public void AA_Click(object sender, EventArgs e)
{
AA.Click -= new System.EventHandler(AA_Click);
........
AA.Click += new System.EventHandler(AA_Click);
}
楼主想避免的是连击事件的发生,类似于Web里的避免二次提交
8过,这WinForm这种情况我没遇到过,正常来说button.Enable = false;后是不会响应点击事件的,
难道楼主的手比button.Enable = false语句执行的还快? 呵呵。