Voilà j'ai trouvé une fonction intéressante sur Internet, mais elle est en C#. D'habitude, j'arrive à passer de VB.NET à C# sans problème, mais cette fois je bloque.
Voici le code C# :
Je ne pense pas que tu puisse utiliser les fonctions anonymes en VB comme c'est fait en C#
Il va falloir que tu créer une vrai fonction avec un paramètre item
items.ToList().ForEach(AddressOf TaFonction)
...
Function TaFonction(ByVal item as ?????)
If (item.ActualWidth + offset_x > size.Width)
item.Visibility = Visibility.Collapsed
Else
item.Visibility = Visibility.Visible
End If
offset_x += item.ActualWidth
End Function
[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Pour jrivet oui j'avais bien compris que c'était équivalent à ce que vous avez écrit avec les acolades en C#, mais mon problème consistait à traduire cela en VB.NET et à réutiliser ce code au sein d'une fonction anonyme. Le problème venait du fait que je n'arrivais pas à caser la dernière ligne (offset_x += item.ActualWidth) au sein de cette fonction anonyme.
Je n'avais pas pensé à la méthode donnée par casy qui est semble-t-il la plus adaptée à mon cas
Méthode qui, à mon avis, aurait du être aussi utilisée en C#
JE ne suis pas du tout un partisan des méthodes anonymes et autres joyeusetés de C# 3.0.
Si, au moment du codage, ça simplifie les choses et ça semble extrêmement puissant, il est, par la suite, bien plus difficile de maintenir un tel code. D'autant plus lorsque le développeur qui doit modifier le code (toujours dans l'urgence, évidement) n'est pas celui qui l'a écrit initialement ni fait l'étude, voire n'a jamais été associé d'une manière ou d'une autre au projet.
Si quelqu'un pouvais confirmer que les méthodes anonymes n'existent pas en VB, j'en serais heureux.
[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Effectivement de votre point de vue ce n'est pas pratique du tout.
Il me semble avoir déjà vu des bouts de code en VB.NET du genre :
items.ToList().Where(Function(p) p = Toto)
D'où ma tentative de ne pas passer par une autre fonction afin de traduire le bout de code dont j'ai besoin. Après quelques recherches, il apparaît que sous VB9 les fonctions anonymes s'appellent en fait Expression Trees.
Pour approfondir un peu la chose, j'ai trouvé quelques articles sur Google.
Comme je vous rejoint sur le fait que la maintenance d'un tel code n'est semble-t-il pas très pratique, je préfère utiliser une autre fonction pour mon cas.