声明多个事件处理程序不起作用

网民

我的页面可以包含多个用户控件。每个用户控件都有至少一个调用事件的按钮。我想捕捉这些事件。

我制作了一个测试页-结果是在用户控件上显式设置了一个处理程序,但是ForEach却没有。这是代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        // This works
        JumpButton1.HasVisited += new EventHandler(JumpButton_HasVisited);

        // This does not work            
        this.Controls.OfType<JumpButton>()
        .ForEach(uc => uc.HasVisited += new EventHandler(JumpButton_HasVisited));
    }

    void JumpButton_HasVisited(object sender, EventArgs e)
    {
        Label1.Text = "Updated button: " + DateTime.Now;
    }

有关在计数返回的控件时的信息-返回1的计数,这表明已找到控件。

有什么想法我可能会出错吗?


更新1

这是一个使用我自己的扩展方法来查找控件的示例。我添加了一个检查,看jumGroup是否包含任何控件,并且确实包含。但是,处理程序仍然不会触发。

        var jumpGroup = Page.FindControls<JumpButton>();
        foreach (var item in jumpGroup)
        {
            // This shows ID's
            Response.Write(item.ID);
        }

        jumpGroup.ForEach(uc => uc.HasVisited += new EventHandler(JumpGroup_HasVisited));

更新2

跟踪了问题的根源,但仍然不确定为什么这不起作用。IEnumerable扩展方法出错-被foreach循环替换时,此方法有效。

    public static IEnumerable<T> ForEach<T>(this IEnumerable<T> @this, Action<T> action)
    {
        @this.ThrowNull("@this");
        action.ThrowNull("action");

        foreach (T item in @this)
        {
            action(item);
            yield return item;
        }
    }
网民

实际问题与正在使用的IEnumerable.ForEach()扩展方法有关,该方法未执行操作。修改了扩展方法后,上面的代码现在可以工作了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

处理程序声明不起作用

来自分类Dev

OnChange事件处理程序不起作用

来自分类Dev

Opencart事件处理程序不起作用

来自分类Dev

Javascript事件处理程序不起作用

来自分类Dev

JavaScript事件处理程序不起作用

来自分类Dev

Opencart事件处理程序不起作用

来自分类Dev

onclick事件处理程序不起作用

来自分类Dev

twitter bootstrap向导:多个事件处理不起作用

来自分类Dev

类更改后,单击事件处理程序不起作用

来自分类Dev

Webgrid中的单击事件处理程序不起作用

来自分类Dev

Bootstrap Switch事件处理程序不起作用

来自分类Dev

C#关闭事件处理程序不起作用

来自分类Dev

Firebase $ save在事件处理程序函数中不起作用

来自分类Dev

JavaScript按钮事件处理程序不起作用

来自分类Dev

“ this”在点击事件处理程序中不起作用

来自分类Dev

C#关闭事件处理程序不起作用

来自分类Dev

使用jQuery添加事件处理程序不起作用

来自分类Dev

Up函数在元素的事件处理程序中不起作用

来自分类Dev

骨干事件处理程序不起作用

来自分类Dev

dom 操作/事件处理程序不起作用

来自分类Dev

drop 函数内的事件处理程序不起作用

来自分类Dev

setState 在事件处理程序中不起作用

来自分类Dev

SDL事件处理不起作用

来自分类Dev

事件处理程序不起作用-弹出窗口上的Lost Focus事件

来自分类Dev

当我具有触摸事件处理程序时,为什么我的鼠标事件处理程序不起作用?

来自分类Dev

UIAlertAction的处理程序不起作用

来自分类Dev

SIGALRM的处理程序不起作用

来自分类Dev

.ashx处理程序不起作用

来自分类Dev

陷阱处理程序不起作用?

Related 相关文章

热门标签

归档