100分求助:如何不触发TextBox的leave事件 我窗体上有2个按钮:确定和取消,若干其他控件,其中textBox挂了leave事件,但是我不想在点击取消按钮时触发leave事件该怎么做? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 textBox.Leave -= 你的事件; 你使用TextBox的Validating事件会好些~~~~~ 没试过,你可以先跟踪一下,看是先触发按钮的点击事件还是先触发textBox的leave事件,如果是先触发按钮的点击事件就简单了,设一个全局的布尔属性,点击按钮时改变属性值为真(或假),在leave事件中判断如果为真(或假)的条件是真的话就直接return就OK了。不过应该是先触发leave事件的,这样的话暂时还没想出什么好办法,等高手来或等我想想吧,呵呵。 比较笨的办法public bool isClieck =true;然后在"取消"里面 isClieck=false;最后在TextBox.leave事件中加个判断if(isCheck){//执行你要的事件} public class MyButton : TextBox { public MyButton() :base() { } protected override void OnLeave(EventArgs e) { return; //base.OnLeave(e); } }自己重载控件,然后将Leave事件去除就行了,这个还会触发Leave,但是,这样重载后leave事件就什么都不做了 我的思路首先是在Leave事件里面判断是不是点的取消按钮,如果不是再执行代码!不知道可不可行?不行再想办法! 在这里,无论点击落那个按钮,都会先执行textBox的leave事件,可以在取消按钮的mouse enter 和mouse level事件里做处理. private void button_cancel_MouseEnter(object sender, EventArgs e) { this.textBox1.Leave -= new System.EventHandler(this.textBox1_Leave); } private void button_cancel_MouseLeave(object sender, EventArgs e) { this.textBox1.Leave += new System.EventHandler(this.textBox1_Leave); } 要看Leave 和Cancel button Click 那个事件先触发,再采取相应的解决办法。 当然是先Leave , 再Cancel button Click . 虽然你已经结贴了。但我还要更给一个更好的方法。你把取消按钮的CausesValidation的属性改成false,然后用TEXTBOX的textBox1_Validating事件,这个事件比LEAVE事件高级。 不过我发现这个方法,有个问题。就是在FormClosing的事件里不行。我在微软的网站上说。好像是BUG。正在处理当中。还是textBox的leave事件里面做,在前面加上一句话 if (btnCancel.Focused) { return; }这样就好了。 给GridControl单元格设置值时陷进死循环 C#会计(金额)打印,问题,如何从右到左,逐个打印 用c#封装access的连接为com组件供c++调用,但是c#中的dataset等关键字,在c++认为是IUnknownPtr 求UDP通讯DLL源码 紧急求助 treeview 添加节点时 节点名的问题 问题很简单,就求你的一句话! 难题,老大们看看。我要用树型结构来显示信息,方法是用递归来实现。 有没有谁做过资源编辑器的 新手提问一个关于搜索的问题 怎样从ie窗口中得到网址?? asp.net限制标题的字数 如何获得listbox被选中项的数量
public bool isClieck =true;
然后在"取消"里面 isClieck=false;
最后在TextBox.leave事件中加个判断
if(isCheck)
{
//执行你要的事件
}
{
public MyButton()
:base()
{ }
protected override void OnLeave(EventArgs e)
{
return;
//base.OnLeave(e);
}
}
自己重载控件,然后将Leave事件去除就行了,这个还会触发Leave,但是,这样重载后leave事件就什么都不做了
可以在取消按钮的mouse enter 和mouse level事件里做处理. private void button_cancel_MouseEnter(object sender, EventArgs e)
{
this.textBox1.Leave -= new System.EventHandler(this.textBox1_Leave);
} private void button_cancel_MouseLeave(object sender, EventArgs e)
{
this.textBox1.Leave += new System.EventHandler(this.textBox1_Leave);
}
当然是先Leave , 再Cancel button Click .
你把取消按钮的CausesValidation的属性改成false,然后用TEXTBOX的textBox1_Validating事件,这个事件比LEAVE事件高级。
还是textBox的leave事件里面做,在前面加上一句话
if (btnCancel.Focused)
{
return;
}
这样就好了。