2017-02-22 26 views
0

Я получаю сообщение «... не имеет подпись, совместимую с делегатом ...» при попытке передать параметр методу. Может ли кто-нибудь посоветовать мне, что я делаю неправильно?Метод вызова из нажатия кнопки не имеет совместимой подписи

Private Sub btnSubmit_Click(sender As Object, e As RoutedEventArgs) Handles btnSubmit.Click 

    Step6Click("btnSubmit") 

End Sub 


Private Sub Step6Click(whereFrom As String) 

Первоначально, ошибка не отмечена, но когда приложение построено, происходит ошибка.

Я изменил («btnSubmit») на («xxx»), думая, что возник конфликт с передачей «btnSubmit», когда была кнопка с именем то же самое. Все еще получите ошибку.

Если я вывожу параметр все вместе, то ошибки не возникает, но мне нужно знать в Step6Click, откуда пришел вызов.

Я могу обойти ошибку, создав свойство или переменную, называемую «whereFrom». Однако я хотел бы понять, почему это ошибка.

Полное сообщение об ошибке:

Ошибка 33 Method 'Private Sub Step6Click (откуда As String)' не имеет подписи, совместимые с делегатом «Делегат Sub RoutedEventHandler (отправителем как объект, е Как System.Windows .RoutedEventArgs).

Спасибо.

+0

Этот вызов 'Step6Click' в порядке. Строка - это строка. Что еще вы делаете с помощью «Step6Click»? Вы пытаетесь использовать его как обработчик событий где-нибудь? Попробуйте Ctl + Shift + F и найдите все решение для «Step6Click». –

+0

Вы как-то сделали Step6Click() обработчиком событий. Посмотри в ХАМЛ. –

+0

В Bizarrely проект WPF VB.NET позволит вам использовать метод без параметров в качестве обработчика маршрутизируемого события в XAML: 'Click =" Step6Click "'. Однако, если у него есть какие-либо параметры *, но не * правильные параметры для делегата 'RoutedEventHandler', вы получите сообщение об ошибке, которое вы видите. C# WPF не позволит вам это сделать, и вы получаете * «Никакая перегрузка для« Foo »не соответствует делегату« RoutedEventHandler ».» * Если вы попытаетесь. –

ответ

0

Если Step6Click является обработчиком события, что вы пытаетесь подключить к замковому случае кнопкам в вашей XAML разметке она должна иметь следующую подпись или без параметров на все:

Private Sub Step6Click(sender As Object, e As RoutedEventArgs) 

End Sub 

Вы может создать другой метод, который вы вызываете из обоих обработчиков событий, то есть просто создайте другой метод с другим именем, например:

Private Sub btnSubmit_Click(sender As Object, e As RoutedEventArgs) Handles btnSubmit.Click 
    Step6ClickMethod("btnSubmit") 
End Sub 

Private Sub Step6Click(sender As Object, e As RoutedEventArgs) 
    Step6ClickMethod("btnSubmit") 
End Sub 

Private Sub Step6ClickMethod(ByVal whereFrom As String) 

End Sub 
+0

Step6Click ссылается на три места. Эти два показаны в моем исходном сообщении и здесь, в xaml:

+0

После перечитывания ответа Эд Плункетта это, похоже, та ситуация, в которой я нахожусь. Поэтому мне кажется, что мне нужно создать общедоступное свойство или переменную, называемую «whereFrom», и использовать это вместо передачи значения. – EManning

+1

Почему вы не можете просто создать метод, как я предложил? – mm8