Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将额外参数从eventHandler传递到C中的void#_C#_.net - Fatal编程技术网

C# 将额外参数从eventHandler传递到C中的void#

C# 将额外参数从eventHandler传递到C中的void#,c#,.net,C#,.net,这是我的代码: private async void Page_Loaded(object sender, RoutedEventArgs e) { i = .../ uc[i].PreviewMouseDown += new MouseButtonEventHandler(UCClick(sender, e, i)); } private void UCClick(object sender, RoutedEventArgs e, int i) { MessageBo

这是我的代码:

private async void Page_Loaded(object sender, RoutedEventArgs e)
{
   i = .../
   uc[i].PreviewMouseDown += new MouseButtonEventHandler(UCClick(sender, e, i));
}



private void UCClick(object sender, RoutedEventArgs e, int i)
{
    MessageBox.Show(i);
}
i
是加载的
页面中的变量
void。我只想在
UCClick
void中使用它,但出现以下错误:

需要方法名


我是C#的新手,我不明白这一点。有人能帮忙吗?

最简单的方法是使用lambda表达式:

uc[i].PreviewMouseDown += (sender, e) => UCClick(sender, e, i);
如果需要,可以添加新的MouseButtonEventHandler,但这毫无意义,因为编译器会为您插入它

订阅事件时,无需添加新的鼠标按钮venthandler——编译器将自动为您插入。例如,这两行执行相同的操作:

something.PreviewMouseDown += SomeHandler;
something.PreviewMouseDown += new MouseButtonEventHandler(SomeHandler);

你能完整地解释一下吗?我是新来的,不知道你在“new
MouseButtonEventHandler
中”添加代码是什么意思@Emad
SomeHandler
需要匹配
鼠标按钮venthandler
的预期模式。通常,如果让VisualStudio生成它,您将得到一个模板,您可以在其中看到要使用的内容。但你不能只是增加额外的东西。我建议将
I
的值保留在类中的全局变量中,以便UCClick可以直接访问它,而不需要将其作为函数arg。尝试将该值分配给control.Tag,并在事件发生时读取它