如何以编程方式创建名称为变量的事件处理程序?

时间:2012-08-03 09:16:17

标签: c#

例如:

MySlider.ValueChanged += new RoutedPropertyChangedEventHandler<double>(Slider_ValueChanged);

除了没有'Slider_ValueChanged'方法存在它不会编译之外,上面说得很好。不仅如此,如果我想以编程方式创建多个滑块,我可能希望为它们提供不同名称的不同处理程序。

理想情况下,我想做类似的事情:

var x = some_handler;
MySlider.ValueChanged += new RoutedPropertyChangedEventHandler<double>(x);

基本思路是按需要返回按编程方式预先配置的滑块面板,我可以根据用户选择的选项进行交换。以编程方式创建的滑块的事件处理程序的实际实现将已存在于项目中。

根据Matthew Walton在下面的回答更正了代码。

1 个答案:

答案 0 :(得分:0)

我认为答案已经存在于你的问题中,除了你的代码不太正确。

var x = some_handler;
MySlider.ValueChanged += new RoutedPropertyChangedEventHandler<double>(x);

会将some_handler附加到活动中。由此可见,您可以编写一个方法,将幻灯片的处理函数和其他信息作为参数,并使用它来设置事件处理程序和其他相关数据,并可能返回幻灯片对象或将其存储在集合中或者你需要做什么。

您可能还想查看匿名函数和lambdas,这可以是为循环内创建的不同对象构造类似但不同的事件处理程序的有用方法。