我的問題歸結爲:VB-TextChanged在退格鍵被擊中後沒有正確觸發?
我有六個文本框,期望值介於0和給定的數字之間。 我想實現的是:
- 如果輸入的數字是0和指定的號碼(如標籤)之間,如果數字輸入的文本將保持黑色
- 超過指定數量,文字會變成紅色
這裏的問題是,如果指定的號碼爲「10」,用戶輸入11,則會變成紅色,因爲它應該,但是,如果他們打退格鍵(輸入的號碼現在是1)數字保持紅色,這不是預期的功能 - 數字1應該是黑色的,因爲它在0和指定的nu之間MBER。
現在所有指定的數字都是硬編碼的(我在初學者課程中,這只是我爲了增加程序功能而做的一些事情,而且我還沒有添加類對於每個「任務」),你可以在技術上輸入負數,我現在不關心。
這是被添加作爲處理程序的所有文本框的特定組框內的子程序
' Handler which gets added to all TextBoxes in "grpGrades" GroupBox
Private Sub txtGradePoints_TextChanged(sender As Object, e As EventArgs)
' Take in generic sender (Textbox) and convert to TextBox (necessary due to Strict mode)
Dim textBox = CType(sender, TextBox)
Try
' the value of the current TextBox being checked
Dim val = Decimal.Parse(textBox.Text)
Select Case textBox.Name
Case "txtPostPoints"
If val > 10 Then textBox.ForeColor = Color.Red
Case "txtCh1TestPoints", "txtCh2TestPoints", "txtCh3TestPoints"
If val > 50 Then textBox.ForeColor = Color.Red
Case "txtCh2TutPoints", "txtCh3TutPoints"
If val > 25 Then textBox.ForeColor = Color.Red
Case Else
textBox.ForeColor = Color.Black
End Select
Catch
textBox.ForeColor = SystemColors.ControlText
End Try
End Sub
這是onload處理從「grpGrades」分組框中得到適當TextBox控件,並增加了前面提到的每個TextChanged處理程序。
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Get array of TextBox Controls from the "grpGrades" GroupBox
Dim textBoxes = grpGrades.Controls.OfType(Of TextBox)()
' Go through the array of TextBoxes and add the TextChanged handler to each TextChanged event
For Each txt In textBoxes
AddHandler txt.TextChanged, AddressOf txtGradePoints_TextChanged
Next
'AddHandler txtPostPoints.TextChanged, AddressOf txtGradePoints_TextChanged
'AddHandler txtCh1TestPoints.TextChanged, AddressOf txtGradePoints_TextChanged
'AddHandler txtCh2TestPoints.TextChanged, AddressOf txtGradePoints_TextChanged
'AddHandler txtCh3TestPoints.TextChanged, AddressOf txtGradePoints_TextChanged
'AddHandler txtCh2TutPoints.TextChanged, AddressOf txtGradePoints_TextChanged
'AddHandler txtCh3TutPoints.TextChanged, AddressOf txtGradePoints_TextChanged
End Sub
子程序的最後一部分只是註釋掉的代碼是怎麼原本的處理程序添加,以防萬一出事了與我的新方法。
編輯:是否真的有必要downvote?是什麼原因?
我投了票。我認爲你提出的建議是完全有效的,你已經提供瞭解決問題的代碼。 +1 – Enigmativity
@Steve。對不起,實際上我在你的帖子上顯示了一個橙色downvote,不確定是否在滾動時點擊它,但我已經撤消它。 (我假設)。如果這是你的帖子上的向下箭頭是橙色的原因(因爲現在向上的箭頭是橙色,所以看起來是這樣的),那麼我並沒有故意這麼做。除非它完全脫離基地,否則我很少會冷靜下來。 –
沒問題@CharlesMay我只是想知道我是否犯了一個錯誤 – Steve