【问题标题】:MouseEventHandler additional parameters - "sender" and "e" cannot be definedMouseEventHandler 附加参数 - "sender" 和 "e" 不能定义
【发布时间】:2013-10-22 07:14:15
【问题描述】:

我想将一个参数传递给我试图用这段代码实现的事件处理程序:

    private void openInputImagesToolStripMenuItem_Click(object sender, EventArgs e)
    {
        ...
        pb.MouseDoubleClick += new MouseEventHandler((sender,e) => showLargeImage(sender,e,imageIndex));
    }

    private void showLargeImage(object sender, MouseEventArgs e, int imageIndex)
    {
        ...
    }

但是,适配器内的“sender”和“e”变量出现错误:

A local variable named 'sender' cannot be declared in this scope because it would give a different meaning to 'sender', which is already used in a 'parent or current' scope to denote something else.

A local variable named 'e' cannot be declared in this scope because it would give a different meaning to 'sender', which is already used in a 'parent or current' scope to denote something else.

我该如何解决这个问题?

【问题讨论】:

    标签: c# event-handling argument-passing


    【解决方案1】:

    您不能像编译器告诉您的那样,将 lambda 方法的参数命名为 sendere

    这会在openInputImagesToolStripMenuItem_Click 方法的参数sender 和lambda 方法的参数之间产生歧义。

    只需使用其他名称,例如

    pb.MouseDoubleClick += new MouseEventHandler((s, e1) => showLargeImage(s, e1,imageIndex));
    

    【讨论】:

      【解决方案2】:

      应该足以将sender 更改为其他内容,例如se

       pb.MouseDoubleClick += 
                    new MouseEventHandler((se,e) => showLargeImage(se,e,imageIndex));
      

      【讨论】:

        【解决方案3】:

        您在 lambda 中重新定义了 sendere,这是不允许的:

        private void openInputImagesToolStripMenuItem_Click(object sender, EventArgs e)
        {
            ...
            pb.MouseDoubleClick += new MouseEventHandler((s,x) => showLargeImage(sender,e,imageIndex));
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-05
          • 2022-01-07
          • 2014-03-21
          • 2016-12-30
          • 1970-01-01
          • 2013-01-24
          相关资源
          最近更新 更多