In event-driven programming, event handlers are typically assigned using methods that accept only the sender object as a parameter. However, sometimes you may need to pass additional data to the event handler.
Example:
Consider the following code:
<code class="language-csharp">private void setup(string someData) { Object.assignHandler(evHandler); } public void evHandler(Object sender) { // 需要在此处使用 someData!!! }</code>
In this example, evHandler is an event handler and needs access to the someData string available in the setup method.
Solution:
To pass someData to evHandler, you can define an event handler using a lambda expression like this:
<code class="language-csharp">private void setup(string someData) { Object.assignHandler((sender) => evHandler(sender, someData)); } public void evHandler(Object sender, string someData) { // 需要在此处使用 someData!!! }</code>
In this code, the lambda expression (sender) => evHandler(sender, someData)
creates a new event handler that takes the sender object as a parameter and passes it along with someData to the evHandler method. This ensures that someData is available in the event handler.
The above is the detailed content of How Can I Pass Additional Parameters to Event Handlers in C#?. For more information, please follow other related articles on the PHP Chinese website!