0

次のかなり単純なC#コードをvb.net 4.0に変換する際に問題がありました。私はまだそれを把握できていない。私は、次のVB.net newbieが一部のC#コードを変換しようとしています

_combo.DataBound += Function(sender, args) 
             Dim item = _combo.FindItemByValue(values(0).ToString()) 
             If item IsNot Nothing Then 
              item.Selected = True 
             End If 

            End Function 

を試してみました。しかし、コンパイラはデータバインドを直接呼び出すことができないと文句を言いますが、RaiseEvents

+1

私は.net型ではありませんが、なぜ誰かがc#からvbにコードを変換したいのであれば、本当に興味があります。いい理由があると確信していますが、それは何ですか? – skaffman

+0

これは私が仕事中に取り組んでいる問題のフォーラムポストから引き出されています。このプロジェクトはvb.net(私の特典ではない)です。私が扱っている問題についての議論はすべてC#で行われています。 –

+1

ああ、十分です。意味をなさない私の哀悼の意を表します。 – skaffman

答えて

2

のAddHandler _combo.DataBound、機能(送信者と呼ばれなければなら

_combo.DataBound += (sender, args) => 
            { 
             var item = _combo.FindItemByValue(values[0].ToString()); 
             if (item != null) 
              item.Selected = true; 
            }; 

、args)... End Function私は正しい構文と思います。

+0

これは、匿名の代理人とインラインでやり直す適切な方法です。それを通常のイベントに変更して委任する方法については、私の答えを参照してください。 –

1

私はそれを理解したと思う。

イベント

のハンドラを作成します

RaiseEvent OnCombo_DataBound(values) 

それを発射する

プライベートイベントOnCombo_DataBound(ByValのは、ArrayListのよう 値)

使用RaiseEventイベントを宣言

Private Sub Combo_DataBound(ByVal values As System.Collections.ArrayList) Handles OnCombo_DataBound 
       Dim item = _combo.FindItemByValue(values(0).ToString()) 
       If item IsNot Nothing Then 
        item.Selected = True 
       End If 
      End Sub 
関連する問題