如何暂时挂起(不触发)控件的事件

问题描述

有一窗体,上有一数据源,与若干控件,当控件与数据源进行绑定时,会触发ValueChanged事件,但我想在数据绑定时不触发该事件,而只在手动改变控件值时才触发该事件。我的想法是在数据绑定前暂时挂起控件的事件,但不知如何处理,或有更好的方法。

解决方案

解决方案二:
绑定前,不要添加该事件(设计阶段去除该控件的该事件),在绑定之后,添加该事件的委托到控件中。如控件的事件假设为:privatevoid控件_ValueChanged(.....){//控件事件}在绑定之后执行如下代码:控件.ValueChanged+=new该事件的委托(控件_ValueChanged);如果不知道事件的委托是什么,可以先在设计阶段添加该事件,然后打开当前类的.Designer.cs文件,从中找到这个控件的关于添加事件委托的代码,然后把该代码复制到绑定之后中,最后删除该事件即可。
解决方案三:
此方法不适用:1、数据绑定通过编程方法实现,目的是为了多次更改绑定,难不成也多次添加该事件的委托?2、就按该方法,我做过测试,还是会触发该事件,以下是测试的代码片断(先绑定,后添加委托),在Designer.cs无ValueChanged的重复委托。numericUpDown1.DataBindings.Add("Value",_rGZSC,"XSZS");numericUpDown1.ValueChanged+=newSystem.EventHandler(ValueChanged);voidValueChanged(objectsender,EventArgse){DataChanged(this,newEventArgs());}
解决方案四:
我认为应该在ValueChanged里面写上if(!控件.Focused)return;当然我的写法是比较投机取巧,楼主可根据自己的实际情况而定
解决方案五:
顶顶顶
解决方案六:
设一个全局布尔变量,初始值设为false,在ValueChanged事件代码中加上判断。privateboolIfBounded=false;voidValueChanged(objectsender,EventArgse){if(!IfBounded)return;DataChanged(this,newEventArgs());}在重新绑定之前,设为false,绑定完之后设为true,不知道这种方法可不可行。privatevoidbounddata(){IfBounded=false;绑定数据源....IfBounded=true;}
解决方案七:
用最笨最简单的方法,搞那么复杂干嘛
解决方案八:
-=ValueChanged数据绑定+=ValueChanged不就行了
解决方案九:
同意5楼的方法
解决方案十:
回复5楼:bounddata与ValueChanged是在同一线程中,只有当bounddata执行完后才会触发ValueChanged事件,所以IfBounded的值永远是true,该方法除非用多线程实现。但多线程编程的工作量太大,而且控制比较困难。我记得以前好像用过一个方法,可以在控件或数据加载时,暂停控件的事件触发,只是想不起用什么方法了,或是VB中有该功能,或者说这个记忆就是错的。回复3楼:你的方法,粗一想,行不通;但细想也对,当手动更改控件值时,该控件是有焦点的。不过,如果2个控件是有连带关系,当手动修改其中一控件,而带动另一控件的值时,那将无法获得正确的结果。
解决方案十一:
触发一个事件时应该是打开一个新的线程的,我做了一个简单的例子:privatevoidbutton1_click(objectsender,EventArgse){textbox1.text="aaa";Console.WriteLine("button1_click");}privatevoidtextbox1_textchanged(objectsender,EventArgse){Console.WriteLine("textbox1_textchanged");}我在点击button1时,输出的结果是:textbox1_textchangedbutton1_click也就是说在给textbox1赋值时先触发了textchanged事件,然后继续下面的代码,不知我这样的解释合理不?
解决方案十二:
textBox1.TextChanged-=textBox1_TextChanged;这里实现数据的绑定。textBox1.TextChanged+=textBox1_TextChanged;我测试过了,不会触发事件
解决方案十三:
感谢各位对该帖的关注,特别感谢tao77对问题的认真负责。虽然“暂时挂起控件的事件”的这个目标没实现,但通过大家的热心帮助使我解决了这个问题。

时间: 2024-09-03 20:02:39

如何暂时挂起(不触发)控件的事件的相关文章

ASP.NET自定义控件组件开发 第三章 为控件添加事件 前篇

好了,我们之前以前开发一个控件.而且也添加了属性,开发也很规范,但是那个控件还差最后一点 :添加事件. ASP.NET的开发都是事件驱动的,现在我们就来为控件添加事件.在说事件之前,希望大家对C#的语法 要熟悉,对委托很事件要懂. 其实定义事件的步骤很简单: 1.声明一个委托. 2.定义一个携带事件信息的类. 3.定义事件4.定义一个通事件发生后,通知其他对象的方法首先来理清一下我们的思路: 1.在下拉框中选中一个值,并且在输入框中也输入相应的值. 2.我们在页面点击"提交"按钮,按钮

JS实现OCX控件的事件响应示例

 JS支持OCX控件的事件(event),当OCX控件定义的事件发生时,JS可以捕获该事件并对事件进行相应的处理. 个人理解,其实就是事件的响应由谁来完成,OCX控件自身肯定是可以实现的,JS提供的这种机制使JS也可以完成OCX控件事件的响应. 简单举例如下: 首先在OCX控件中添加自定义事件(预定义事件同理,如鼠标点击等,没亲自试,感觉原理应该是一样的), 事件应该是属于窗口的,所以在Ctrl类上单击右键,Add->Add Event,如下图: 在打开的对话框中输入事件名称,例如OnChang

JavaScript调用Activex控件的事件的实现方法_javascript技巧

书写成这样: <SCRIPT type="text/javascript" FOR="activexID" EVENT="onXXXevent()" > // js 处理具体内容. </SCRIPT> 当acitveX控件 onXXXevent()事件被触发时,调用此方法. 如果一个半个的话还好说,几十个这样的函数,把我的页面占据的满满的.况且在VS2008中,"设置选定内容格式化"总是提示:"

JS实现OCX控件的事件响应示例_javascript技巧

JS支持OCX控件的事件(event),当OCX控件定义的事件发生时,JS可以捕获该事件并对事件进行相应的处理. 个人理解,其实就是事件的响应由谁来完成,OCX控件自身肯定是可以实现的,JS提供的这种机制使JS也可以完成OCX控件事件的响应. 简单举例如下: 首先在OCX控件中添加自定义事件(预定义事件同理,如鼠标点击等,没亲自试,感觉原理应该是一样的), 事件应该是属于窗口的,所以在Ctrl类上单击右键,Add->Add Event,如下图: 在打开的对话框中输入事件名称,例如OnChange

jQuery 相关控件的事件操作分解_jquery

今天突然对他的事件产生了兴趣,先前也碰到过,也没整理,今天有空就弄一下咯. 对于控件的事件,jQuery已经提供了丰富的方法,包括绑定.一次绑定.触发等,阿拉今早看看叫一哪能用额伐,大虾路古就可以了. jQuery的绑定事件非常方便,有bind.live.one还有它帮你把一些常用的事件给单独了出来,比如控件的onclick事件,我们绑定onclick事件的时候只需要 复制代码 代码如下: $("#testButton").click(function() { alert("

JQuery 对控件的事件操作

JQuery是非常棒的js类库,有丰富的UI库和插件,不过我钟爱他的是他的选择器,感觉其他功能有时跟后台人员距离很远,所以一般我也只使用一下他的选择器. 今天突然对他的事件产生了兴趣,先前也碰到过,也没整理,今天有空就弄一下咯. 对于控件的事件,jQuery已经提供了丰富的方法,包括绑定.一次绑定.触发等,阿拉今早看看叫一哪能用额伐,大虾路古就可以了. jQuery的绑定事件非常方便,有bind.live.one还有它帮你把一些常用的事件给单独了出来,比如控件的onclick事件,我们绑定onc

ASP.NET用户控件返回事件的方法

asp.net|控件 ASP.NET用户控件一般适用于产生相对静态的内容,所以没有builtin的事件支持.本文讨论用户控件返回事件的方法. 假定用户控件(UserControl.ascx)中包含按钮控件AButton,希望实现按AButton按钮时,包含该用户控件的页面可以接收到事件.为此,小鸡射手在用户控件和页面的代码中分别作了处理. UserControl.ascx.cs中的处理: 1. 定义public的事件委托,如ClickEventHandler; 2. 在UserControl类中

软件-vb.net 动态生成的控件,事件也动态加,怎么做呢?

问题描述 vb.net 动态生成的控件,事件也动态加,怎么做呢? 我现在做一个软件,想把下面一排的快捷按钮也做成动态生成的,也就是让用户自己选择(已存入数据库),动态按钮的事件要使用上面菜单的单击事件,如何写这样的动态事件呢?addhandler xx addressof xxx 我会使用,但是我在主界面加载的时候快捷按钮是用户自定义设置的,每次可以读出来用户设置了哪个菜单作为快捷按钮,就是无法使用菜单的事件,求大家帮帮忙. 绑定事件我会 AddHandler Button1.Click Add

在一个activity里如何监听另一个xml里的控件的事件

问题描述 在一个activity里如何监听另一个xml里的控件的事件 比如我有两个xml:main.xml和main1.xml 我在一个activity里setcontentView(R.layout.main) 而我想在这个activity里监听main1.xml里一个button按钮的点击事件,我应该怎么做? 求大神指导.(试过了LayouInflater拿到了main1.xml里button的id,但是设置onclicklister后系统没有响应点击事件) 解决方案 直接绑定监听是做不到的