0

J'ai eu du mal à convertir le code C# assez simple suivant en vb.net 4.0, qui, d'après ce que je comprends, a des délégués anonymes. Je n'ai pas encore réussi à le comprendre.VB.net newbie essayant de convertir du code C#

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

J'ai essayé ce qui suit

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

            End Function 

Mais le compilateur se plaint que DataBound ne peut pas être appelé directement, mais doit être appelé avec RaiseEvents

+1

Je ne suis pas un type .net, mais je suis vraiment curieux (en passant) de savoir pourquoi quelqu'un voudrait convertir le code de C# en vb. Je suis sûr qu'il y a une bonne raison, mais qu'est-ce que c'est? – skaffman

+0

Ceci est extrait d'un post du forum pour un problème sur lequel je travaille au travail. Le projet est vb.net (pas mon fort.) Et la discussion sur le problème que je traite est tout en C#. –

+1

Ah, c'est juste. Logique. Mes condoléances. – skaffman

Répondre

2

AddHandler _combo.DataBound, Fonction (expéditeur , args) ... End Function est je pense que la syntaxe correcte.

+0

C'est la bonne façon de le faire en ligne avec un délégué anonyme, merci. Voir ma réponse pour un moyen de le changer en un événement habituel et déléguer. –

1

Je pense que je l'ai compris.

déclare un événement

événement privé OnCombo_DataBound (ByVal valeurs ArrayList)

Utilisez RaiseEvent pour ce feu

RaiseEvent OnCombo_DataBound(values) 

Créer un gestionnaire pour l'événement

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