1

こんにちは、初心者からの別の質問です。テキストボックス内の数値タイプをセミコロンで区切ることができますが、バックスペースを使用するとセミコロンを削除できないという問題があります..

私のコードはこれです

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As   System.EventArgs) Handles TextBox1.TextChanged

    If TextBox1.TextLength Mod 3 = 2 Then
        SendKeys.SendWait(":")

    End If
End Sub
4

2 に答える 2

1

少しファッジ、そしておそらくよりエレガントなソリューションですが...

Dim ValidKey As Boolean = True

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress

    If Char.IsLetterOrDigit(e.KeyChar) Then

        ValidKey = True

    Else

        ValidKey = False

    End If

End Sub

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged

    If ValidKey And TextBox1.TextLength Mod 3 = 2 Then
            SendKeys.SendWait(":")

    End If
End Sub

もちろん、必要に応じて数字のみのキーを精査することで、これを拡張することもできます....

編集:このコードを最小化できます。

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress

    If Char.IsLetterOrDigit(e.KeyChar) And TextBox1.TextLength Mod 3 = 2 Then
        SendKeys.SendWait(":")

    End If

End Sub

TextChanged Sub、余分な変数、およびelseステートメントを削除します...

編集2:数値入力のみに制限するため...

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress

    If Char.IsDigit(e.KeyChar) And TextBox1.TextLength Mod 3 = 2 Then

        SendKeys.SendWait(":")

    ElseIf Char.IsLetter(e.KeyChar) Then

        e.Handled = True

    End If

End Sub
于 2013-07-03T18:33:30.693 に答える
1

これを試して:

Dim backPressed As Boolean = False

Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
    If backPressed Then
        backPressed = False
        Return
    End If

    If TextBox1.TextLength Mod 3 = 2 Then
        SendKeys.SendWait(":")
    End If

End Sub

Private Sub TextBox1_KeyPress(sender As System.Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
    If e.KeyChar = ChrW(8) Then
        backPressed = True
    End If
End Sub
于 2013-07-03T18:48:08.403 に答える