我有一個在調用函數(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