开发者

F# how to AddHandler alike VB.NET

VB.NET code is :

AddHandler开发者_如何学JAVA TheGrp.DataChanged, AddressOf theGrp_DataChange

So how can I do same with F# ?

theGrp.DataChanged.AddHandler(X.theGrp_DataChange)

Error 1 This function takes too many arguments, or is used in a context where a function is not expected


Try theGrp.DataChanged.AddHandler(fun o e -> X.theGrp_DataChange(o, e)). The signature for AddHandler indicates that it takes a delegate, so you can either explicitly create one (via something like DataChangedEventHandler(fun o e -> X.theGrp_DataChange(o, e))) or you can let the compiler implicitly add the delegate constructor when given a function definition, but you can't just use the method itself.


Alternatively, if you don't want to create a lambda expression explicitly, you can also write (In this case, the function signature matches the signature required by the delegate, so it should work):

theGrp.DataChanged.AddHandler(DataChangedEventHandler(x.theGrp_DataChanged))

Also, if you don't need the sender argument, you can declare the theGrp_DataChanged method to take only the event args argument and then write just:

theGrp.DataChanged.Add(x.theGrp_DataChanged)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜