【问题标题】:MouseEventArgs .handled equivalent? Click AND mouseup firing twiceMouseEventArgs .handled 等价物?单击和 mouseup 触发两次
【发布时间】:2013-04-03 21:36:04
【问题描述】:

MouseEventArgs 是否有等效于执行 e.Handled 的方法?我遇到了一个问题,我的事件处理程序在同一个对象上触发了两次。我单击对象(一个按钮),它运行应该删除按钮的代码。我一步一步地通过,因为它删除了按钮。但随后它再次运行!我检查了发件人——它的(据说被删除了!)按钮 0_o。

    private void InTrayButton_MouseUp(object sender, MouseEventArgs e)
    {
        Button button = (Button)sender;
        int element = 0;

        //Find the index of the button in the list
        foreach (ButtonList a in buttonList)
        {
            if (button == a.buttonSaved)
                break;
            element++;
        }

        //Remove the button
        this.Controls.Remove(buttonList[element].buttonSaved);
        buttonList[element].buttonSaved.Dispose();
        buttonList.Remove(buttonList[element]);

    }

任何人对我如何强制它停止两次停止有任何想法?无论我将其设置为 mouseup 还是 click 事件都没有关系,它每次都会触发两次 >_>

【问题讨论】:

  • 事件是多播的;你确定你没有不止一次连接过一个处理程序(甚至你的情况下是同一个处理程序)吗?
  • 我认为仅仅试图隐藏处理程序被调用两次的事实是错误的心态。它被调用两次是有原因的,最好让你找到原因。
  • 这回答了我的问题!果然,我在一个最终被多次调用的地方添加了事件处理程序。非常感谢你!如果你把它作为答案,那么在 10 分钟内我会选择它!
  • 杰西-你说得对。我忽略了大约 30 分钟的原因并点击了“我不在乎,我只是想让它工作!”观点。我很高兴这次成功了,但下一次我会更好地专注于原因而不是解决方法!

标签: c# event-handling


【解决方案1】:

听起来您在代码中不止一次地连接同一个事件处理程序。我建议追踪它在哪里,并确保它只发生一次。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 2016-05-05
    • 2021-06-27
    • 2015-01-15
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    相关资源
    最近更新 更多