开发者

Reactive in VB.net

开发者 https://www.devze.com 2023-03-16 20:58 出处:网络
Can anyone help me please! I tried to implement something that in C# is: var keysIO =Observable.FromEvent<KeyDownEventHandler, RoutedEventArgs>(

Can anyone help me please!

I tried to implement something that in C# is:

var keysIO =   Observable.FromEvent<KeyDownEventHandler, RoutedEventArgs>(
                                h => new Ke开发者_如何学GoyDownEventHandler(h),
                                h => btn.KeyDown += h,
                                h => btn.KeyDown -= h));

How to write that in VB?

Thank you, R


I first got your code to compile on my machine:

var keysIO = Observable.FromEvent<KeyEventHandler,KeyEventArgs>(
                                    h => btn.KeyDown += h, 
                                    h => btn.KeyDown -= h);

Then I opened it in Reflector and modfied to

Dim keysIO As IObservable(Of KeyEventArgs) = _
        Observable.FromEvent(Of KeyEventHandler, KeyEventArgs)( _
            (Sub(h) AddHandler btn.KeyDown, h), _
            (Sub(h) RemoveHandler btn.KeyDown, h))


The C# btn.KeyDown += h corresponds to the following in VB:

AddHandler btn.KeyDown, AddressOf h

Similarly, -= corresponds to RemoveHandler.

However, the VB compiler has issues when using custom EventHandler types that are not directly the generic EventHandler(Of T). In the case of your sample, I"m not sure what the custom KeyDownEventHandler type is doing, in the conversion parameter. If you don't need it, you may be able to use the weakly typed version:

Dim keysIO = Observable.FromEventPattern(Of KeyDownEventHandler, RotedEventArgs)(btn, "KeyDown")
0

精彩评论

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

关注公众号