2011-06-30 8 views
1

誰でも助けてくれますか?VB.netで反応する

私はC#である何かを実装してみました:

var keysIO = Observable.FromEvent<KeyDownEventHandler, RoutedEventArgs>(
           h => new KeyDownEventHandler(h), 
           h => btn.KeyDown += h, 
           h => btn.KeyDown -= h)); 

VBでそれを書くためにどのように?

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

その後、私は反射でそれを開いて、

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

答えて

2

私が最初に私のマシン上でコンパイルするようにコードを持って、ありがとう.KeyDown + = hは、VBの次の項目に対応します。

AddHandler btn.KeyDown, AddressOf h 

同様に、 - =はRemoveHandlerに対応します。

しかし、汎用のEventHandler(Of T)ではなく、カスタムのEventHandler型を使用する場合、VBコンパイラに問題があります。あなたのサンプルの場合、私は、「カスタムKeyDownEventHandlerタイプは変換パラメータで、何をしているのか分からない、あなたがそれを必要としない場合、あなたは弱い型付けされたバージョンを使用することができる場合があります。

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

を私はそれを試してみます –

0

C#BTNにmodfied:

は R

+0

クール。これも試してみます。 –