#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)
{
MessageBox.Show(i);
}
i
является переменной в Page_Loaded
void. Я просто хочу использовать его в UCClick
void, но я получаю следующую ошибку:
Ожидаемое имя метода!
Я новичок в C # и я этого не понимаю. Кто-нибудь может помочь?
Комментарии:
1. попробуйте присвоить это значение control . Помечайте и считывайте его при возникновении события
Ответ №1:
Самый простой способ — использовать лямбда-выражение:
uc[i].PreviewMouseDown = (sender, e) => UCClick(sender, e, i);
Вы можете добавить, new MouseButtonEventHandler
если хотите, но это бессмысленно, так как компилятор вставит это за вас.
Смотрите Документы по анонимным функциям.
Нет необходимости добавлять, например new MouseButtonEventHandler
, при подписке на события — компилятор вставит его для вас автоматически. Например, эти две строки выполняют одно и то же:
something.PreviewMouseDown = SomeHandler;
something.PreviewMouseDown = new MouseButtonEventHandler(SomeHandler);
Комментарии:
1. Не могли бы вы полностью объяснить? Я новичок в этом и не знаю, что вы имеете в виду, добавляя этот код » в » новый
MouseButtonEventHandler
!2. @Emad
SomeHandler
должен соответствовать шаблону, ожидаемому от aMouseButtonEventHandler
. Обычно, если вы позволите Visual Studio сгенерировать его, вы получите шаблон, в котором увидите, что использовать. Но вы не можете просто добавить к этому дополнительные вещи. Я советую просто сохранить ваше значение fori
в глобальной переменной в классе, чтобы UCLICK мог получить к нему прямой доступ, не нуждаясь в нем как аргументе функции.