我有一个在调用函数(CarBenefitFrm)时动态生成的表单(CarForm),它包含一个复选框,单击它时将启用一个文本框(HireBox)。我已经将一个处理程序与此文本框相关联,以便每次文本更改时,都应将文本保存在变量(结果)中,然后返回该结果,此代码包含在名为HireInput的Sub中。但是,我不能把函数的return语句放在sub中。处理程序子句中的return语句
在下面,我连接形式的图像
我怎样才能返回变量“结果”给调用者?
我知道如何将代码与处理程序关联的唯一方法是将其包含在一个子文件中。我已阅读过有关代表,但不知道如何在此处应用它。
我会很感激我能得到的任何帮助,以及代表如何工作的简单解释。
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
为什么需要动态生成*?看起来像一个花园品种对话框 – Plutonix
...和一个'Sub' - 包括事件处理程序 - 不返回任何东西。什么将它返回到***的价值? Windows调用它,但它不会关心你的结果或知道如何处理它。如果你已经把它捕获到'result'中,那么你的工作就完成了,除了将它公开为一个Property或者方法 – Plutonix
而不是CarForm是一个'Form',为它创建一个新的类。在调用者可以访问的表单类中定义一个公共属性。用'CarForm.ShowDialog()'显示表单,并在关闭属性后读取它。 – djv