Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Unsubscribe / remove Event Handler with custom arguments

I subscribe / create a custom Event Handler with the following code:

myButton.Click += (sender, e) => MyButtonClick(sender, e, stuff1, stuff2);


I want to unsubscribe / remove and tried it like this:

myButton.Click += MyButtonClick;

But throws the following error:
No overload for 'MyButtonClick' matches delegate 'System.Windows.RoutedEventHandler'


And like this:

myButton.Click += MyButtonClick(sender, e, stuff1, stuff2);

But throws the following error:
Cannot implicitly convert type 'void' to 'System.Windows.RoutedEventHandler'


How do I unsubscribe / remove that same Event Handler?

like image 938
Schrödinger's Box Avatar asked Mar 04 '26 12:03

Schrödinger's Box


1 Answers

When you use Lambda you need to keep a reference of it to unsubscribe.

Try this

RoutedEventHandler handler = (sender, e) => MyButtonClick(sender, e, stuff1, stuff2);
myButton.Click +=  handler;//Subscribe
//Some more code
myButton.Click -=  handler;//Unsubscribe
like image 87
Sriram Sakthivel Avatar answered Mar 06 '26 01:03

Sriram Sakthivel