首页 > 解决方案 > 限制输入到组合框时消耗的 Ctrl + V KeyEventArgs 和 KeyPressEvent

问题描述

我有一个组合框,我需要限制用户输入以仅允许以下字符:

我还需要防止在此组合框中使用 Enter/Return 键。

目前,这是通过 KeyDown 和 KeyPress 事件的组合完成的:

Public Class frm
Dim x As KeyEventArgs
    Private Sub cb_KeyDown(sender As Object, e As KeyEventArgs) Handles cb.KeyDown
        If e.KeyCode = Keys.Enter Then
            e.SuppressKeyPress = True
        End If
    End Sub

    Private Sub cb_KeyPress(sender As Object, e As KeyPressEventArgs) Handles cb.KeyPress
        If Char.IsLetterOrDigit(e.KeyChar) OrElse Char.IsWhiteSpace(e.KeyChar) Then
                e.Handled = False
            ElseIf e.KeyChar = "." OrElse e.KeyChar = "/" OrElse e.KeyChar = "," Then
                e.Handled = False
            Else
                e.Handled = True
        End If
    End Sub
End Class

问题是这会阻止默认的复制、剪切和粘贴行为(CTRL+C、CTRL+X、CTRL+V)起作用。

CTRL 键永远不会触发 KeyPress 事件,所以我真的不明白为什么它似乎被静默处理并且从未传递回默认行为发生的表单。

我已经KeyPreview = True定了。

标签: vb.netwinforms

解决方案


推荐阅读