c# event-handling argument-passing

c# - Parámetros adicionales de MouseEventHandler: "remitente" y "e" no se pueden definir



event-handling argument-passing (3)

Debería ser suficiente para cambiar el sender a otra cosa, por ejemplo:

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

Quiero pasar un argumento a un controlador de eventos que estoy tratando de lograr con este código:

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) { ... }

Sin embargo, estoy obteniendo un error en las variables "emisor" y "e" dentro del adaptador:

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.

¿Como puedo resolver esto?


No puede nombrar el parámetro de su sender método lambda y e , como le dice el compilador.

openInputImagesToolStripMenuItem_Click una ambigüedad entre el sender del parámetro del método openInputImagesToolStripMenuItem_Click y el parámetro del método lambda.

Solo usa otros nombres, como

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


Usted tiene una redefinición de sender y e dentro de su lambda y eso no está permitido:

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