You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET实现文本框输入点号后仅允许输入数字5的需求求助

VB.NET Solution: Restrict Input to Only "5" After a Dot (.)

Hey there! Let's work through this requirement you have. You want a TextBox where once a dot (.) is entered, the only allowed input is the number 5—no letters, other digits, or special characters get through. Here's a practical, user-friendly implementation:

Step 1: Handle Keypress Events (Real-Time Input Blocking)

First, we'll use the KeyPress event to intercept every key the user presses, so we can immediately block invalid inputs after a dot is present. We'll also make sure backspace works so the user can correct their input.

Add this code to your form's code-behind:

Private Sub TextBox1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox1.KeyPress
    ' Allow backspace for deleting text
    If e.KeyChar = Chr(8) Then Exit Sub

    ' Check if the text already contains a dot
    If TextBox1.Text.Contains(".") Then
        ' Only let the "5" key through
        If e.KeyChar <> "5"c Then
            e.Handled = True ' Cancel the invalid key press
        End If
    Else
        ' Optional: Restrict pre-dot input to digits + dot (uncomment if needed)
        ' If you want to ensure only numbers and the dot are allowed before the dot:
        ' If Not Char.IsDigit(e.KeyChar) AndAlso e.KeyChar <> "."c Then
        '     e.Handled = True
        ' End If
    End If
End Sub

Step 2: Handle Paste Operations (Clean Up Invalid Pasted Text)

The KeyPress event doesn't catch paste actions, so we'll add a TextChanged event to clean up any invalid characters that get pasted after the dot.

Add this code too:

Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    Dim dotPosition As Integer = TextBox1.Text.IndexOf(".")
    
    ' If a dot exists and there's text after it
    If dotPosition <> -1 AndAlso dotPosition < TextBox1.Text.Length - 1 Then
        ' Keep only "5"s in the text after the dot
        Dim cleanedPostDot As String = New String(
            TextBox1.Text.Substring(dotPosition + 1).Where(Function(c) c = "5"c).ToArray()
        )
        
        ' Reconstruct the valid text and update the TextBox
        TextBox1.Text = TextBox1.Text.Substring(0, dotPosition + 1) & cleanedPostDot
        
        ' Move the cursor to the end so the user doesn't get interrupted
        TextBox1.SelectionStart = TextBox1.Text.Length
    End If
End Sub

How It Works

  • Keypress Handling: As soon as a dot is in the TextBox, any key that isn't "5" (or backspace) gets blocked immediately.
  • Paste Handling: If someone pastes text like 123.456, the code will automatically turn it into 123.55—removing all non-5 characters after the dot.
  • Optional Pre-Dot Restriction: If you want to make sure users can only enter numbers and the dot before the dot is added, uncomment the lines in the Else block.

内容的提问来源于stack exchange,提问作者John Monzon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:37:59