クライアントが特定の文字を入力できないように、WinForms の textBox に一種のフィルターを設定しました。ただし、修正の助けが必要な新しい問題が作成されたようです。
a) バックスラッシュをクリックすると、カーソルが正しい位置にとどまるのではなく、文字列の先頭に移動します。
b) 続けて BACKSLASH をクリックすると、正しい場所から削除されますが、カーソルは文字列の先頭に残ります。
Private Sub txtExp_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtExp.KeyPress
Dim strtext As String = txtExp.Text
If (e.KeyChar = ChrW(Keys.Back)) Then
If (strtext.Length > 0) Then
txtExp.Text = strtext.Substring(0, strtext.Length - 1)
txtExp.Update()
End If
ElseIf (Not (Char.IsDigit(e.KeyChar) Or Char.IsControl(e.KeyChar) Or (e.KeyChar = "."))) Then
e.Handled = True
Else
txtExp.AppendText(e.KeyChar)
End If
End Sub
代わりに、カーソルを常に正しい場所に配置することをお勧めします。どうすればこれを達成できますか?