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
中”添加代码是什么意思@EmadSomeHandler
需要匹配鼠标按钮venthandler
的预期模式。通常,如果让VisualStudio生成它,您将得到一个模板,您可以在其中看到要使用的内容。但你不能只是增加额外的东西。我建议将I
的值保留在类中的全局变量中,以便UCClick可以直接访问它,而不需要将其作为函数arg。尝试将该值分配给control.Tag,并在事件发生时读取它