J'ai un formulaire (CarForm) qui est généré dynamiquement lorsqu'une fonction est appelée (CarBenefitFrm) et il comprend une case à cocher qui, une fois cliqué, activera une zone de texte (HireBox). J'ai associé un gestionnaire avec cette zone de texte afin que chaque fois que le texte change, il devrait enregistrer le texte dans une variable (résultat) puis retourner ce résultat, ce code est inclus dans le sous appelé HireInput. Cependant, je ne peux pas mettre l'instruction return de la fonction dans le sous-répertoire.déclaration de retour dans le gestionnaire sous
Ci-dessous j'ai joint une image de la forme
Comment puis-je retourner la variable « résultat » à l'appelant?
La seule façon de savoir comment associer du code à un gestionnaire est de l'inclure dans un sous-répertoire. J'ai lu sur les délégués, mais je ne sais pas comment je peux l'appliquer ici.
J'apprécierai toute aide que je peux obtenir, aussi une explication simple sur la façon dont les délégués travaillent.
Module CarBnft
Public Function CarBenefitFrm() As Decimal
Dim result As Decimal
Dim CarForm As New Form
'CODE FOR GENERATING BUTTONS, CHECKBOXES, TEXTBOXES GOES HERE
Dim HireInput = Sub()
If (IsNumeric(HireBox.Text) = False) And (String.IsNullOrWhiteSpace(HireBox.Text) = False) Then
HireBox.Clear()
MsgBox("Please enter a number in this field", MsgBoxStyle.Information, "Error")
ElseIf (IsNumeric(HireBox.Text) = True) And (String.IsNullOrWhiteSpace(HireBox.Text) = False) Then
Decimal.Parse(HireBox.Text, Globalization.NumberStyles.AllowDecimalPoint)
result = HireBox.Text
return result 'not working because return
' statement is within the
' HireInput Sub
End If
End Sub
AddHandler HireBox.TextChanged, HireInput 'only know how to add code for a handler using a sub
End Function
End Module
Pourquoi doit-il être dynamiquement * généré *? Ressemble à une boîte de dialogue de variété de jardin – Plutonix
... et un gestionnaire Sub - y compris les gestionnaires d'événements - ne renvoie rien. Que rendrait-il la valeur *** à ***? Windows l'a appelé, mais il ne se soucie pas de votre résultat ou ne sait pas quoi en faire. Si vous êtes déjà en train de capturer 'result', votre travail est fait sauf pour l'exposer comme une propriété ou une méthode – Plutonix
Au lieu que CarForm soit un' Form', créez une nouvelle classe pour cela. Définissez une propriété publique dans la classe de formulaire accessible par l'appelant. Montrez le formulaire avec 'CarForm.ShowDialog()' et lisez la propriété une fois qu'elle est fermée. – djv