c# 怎么阻止事件执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 怎么阻止事件执行相关的知识,希望对你有一定的参考价值。

比如说 listbox 分别有 buttonDown事件 和 selectedChanged事件
当我点击listbox中的一条内容时, 这两个事件都会触发, 所以就会执行两次

怎么能在buttonDown事件之后, 阻止selectedChended事件?
写错了 不是buttonDown 是 mouseDown...

看图吧,这类问题都是这么解决的。还有,做事情尤其是写代码要一丝不苟,ListBox貌似没有selectedChended事件,应该是SelectedIndexChanged吧。

参考技术A 在产生事件的时候是有传入参数的,sender就表示产生事件控件,判断下是那个按钮发出的事件就好了吧?
我很纳闷你为什么要写在一个函数里面呢,既然是不同的功能直接写在两个响应函数不行吗?我很不理解。。。
参考技术B 在selectedChended事件第一行 return 一下追问

谢谢...最好可以是鼠标点击的时候执行 mouseDown 而selectedChanded不执行 但是如果键盘操作的话 selectedChanged还是要执行的

追答

那就加个判断
你要做什么啊

追问

就是一个listbox 一开始我只加了selectedChanged事件 但有个问题 比如说 listbox中有item1 item2 item3 比如说在点击item2的时候, 如果当前listbox中已经选中了item2 那就相当于没点了 所以加了一个mouseDown事件 这样就解决了如果有鼠标点击, 但是selectedChanged事件没触发的情况

但是如果现在listbox中选中的是item2 然后用鼠标去点item1或3 那mouseDown和SelectedChanged就都会触发 所以我真没办法了...- -

追答

mouseDown与SelectedChanged事件都执行了什么操作呢
那么纠结

本回答被提问者和网友采纳
参考技术C 把事件给卸载了

Jquery 事件执行两次

js(jquery)的on绑定点击事件执行两次的解决办法—不是事件绑定而是事件冒泡

阻止冒泡的方法并不止 return false 这一种,还有event.stopPropagation(),这两种方法是有区别的,简单来说:
event.stopPropagation()会阻止事件往上冒泡,但是并不阻止事件本身;
return false 则是既阻止了事件往上冒泡又阻止了事件本身。

修改前

    $(".project_select").change(function () {

        var checkText=$(".project_select").find("option:selected").text();
        //alert(checkText);

        if (checkText == ‘请选择‘) {
            return false;
        }




       });

 

修改后

 

    $(".project_select").unbind(‘change‘).change(function () {

        var checkText=$(".project_select").find("option:selected").text();
        //alert(checkText);

        if (checkText == ‘请选择‘) {
            return false;
        }

       });

 



以上是关于c# 怎么阻止事件执行的主要内容,如果未能解决你的问题,请参考以下文章

DataGridView CellFormatting 事件阻止表单绘制

vue阻止冒泡事件 阻止点击事件的执行 结合div和组件阻止点击事件

js在父元素上添加点击事件,怎么阻止子元素继承父元素的点击事件

js怎么通过阻止父元素事件和所有子元素事件

事件执行---阻止蔓延

js 阻止事件执行