对文本框使用KeyPress事件逻辑.文本分配
本文关键字:文本 分配 事件 KeyPress | 更新日期: 2023-09-27 17:58:07
我有下面关于文本框的KeyPress事件的代码,但现在有了需求,这意味着我必须执行myTextbox。Text="输入字符串"
Private Sub ChequeAmountKeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtChequeAmount.KeyPress
Dim tb As TextBox = sender
If (e.KeyChar = "." AndAlso tb.Text.Length = 0) Then
e.Handled = True
End If
If Not (Char.IsDigit(e.KeyChar) Or Char.IsControl(e.KeyChar) Or (e.KeyChar = "." And tb.Text.IndexOf(".") < 0)) Then
e.Handled = True
End If
If (tb.SelectionStart > tb.Text.Length - 2 And tb.Text.IndexOf(".") >= 0 And tb.Text.IndexOf(".") + 3 = tb.Text.Length) Then
e.Handled = True
End If
If (tb.Text.IndexOf(".") < 0 And tb.Text.Length >= 4 And e.KeyChar <> ".") Then
e.Handled = True
End If
If (tb.Text.IndexOf(".") >= 0 And tb.Text.Length >= 7) Then
e.Handled = True
End If
If (e.KeyChar = ControlChars.Back) Then
e.Handled = False
End If
End Sub
这个输入字符串可能包含我不想要的格式,虽然按键事件满足了用户输入时的需要,但我需要在文本分配的情况下处理它。
我想在分配了text属性后触发keypress事件,但我认为这不会提供我想要的。
感谢
您需要做的是将此代码重构为一个方法,然后从相关事件中调用该方法。
如果您需要在键入时单独检查每个键,以及同时检查指定的字符串,那么最好使用两个函数,添加一个函数来检查字符串的有效性。
我通常更喜欢使用Leave事件一次检查所有字符串,因为用户在检查之前输入整个字符串可能更自然。如果执行此操作,则可以在分配文本之前从Leave事件处理程序调用相同的有效性检查函数。