Comment pouvez-vous, dans VB.Net, évaluer la valeur des contrôles référencés dans une chaîne? Supposons que vous ayez une zone de texte N contenant un contenu alphanumérique et référencés dans une variable de chaîne comme ceci:Comment évaluer une chaîne contenant des références aux contrôles Windows Forms au moment de l'exécution?
Dim s As String = """Hello "" & N.Text & ""!"""
Je voudrais être en mesure de réévaluer le contenu de la variable s ailleurs dans le code (où il y a aucune connaissance directe de l'existence de N), par exemple, comme ceci:
Dim e As String = Eval(s)
Ceci est impossible avec VB.Net; aucune fonction Eval de ce type n'est disponible. J'ai vu des solutions presque plausibles en ligne telles que l'utilisation du vieux COM ScriptControl:
Private Shared _scriptControl As MSScriptControl.ScriptControl = New ScriptControl()
_scriptControl.Language = "VBScript"
Dim e As String = _scriptControl.Eval(s)
Cependant, la référence à la propriété N.Text d'un contrôle Windows Forms est étranger à l'objet ScriptControl, et donc il jette une erreur.
Existe-t-il d'autres solutions rapides qui ne nécessitent pas l'achat d'un composant tiers?
Avez-vous besoin de considérer une expression entière, ou êtes-vous simplement inquiet à propos de l'évaluation d'une chaîne identifiant une variable/un contrôle? Ce dernier devrait être assez simple à faire en utilisant la réflexion. – Craig
Ressemble à une variable de chaîne ordinaire ordinaire. Résolvez le contenu dès le début, une fois – Plutonix
Est-ce que ce doit être une chaîne? Sinon, un délégué à une expression lambda serait préférable, par ex. 'Dim s Comme Func (Of String) = Fonction()" Bonjour "& N.Text &"! "' –