当前位置 : 主页 > 编程语言 > c语言 >

VB.NET – 如何使每个按键只接受一个字符的文本框?

来源:互联网 收集:自由互联 发布时间:2021-06-24
我的项目是模拟Enigma机器,我需要一些处理可视界面的帮助. 在我的程序中,我需要一个文本框,用户可以在其中输入无限数量的字母.但是,程序还会根据输入的文本更新其他组件,并显示用
我的项目是模拟Enigma机器,我需要一些处理可视界面的帮助.

在我的程序中,我需要一个文本框,用户可以在其中输入无限数量的字母.但是,程序还会根据输入的文本更新其他组件,并显示用户的可视化表示.

例如,当我按下字母“A”时,程序将其编码为字母“S”并在界面中显示图像.但是,每次编码字母时,该编码都是唯一的.

如你所知,当你长时间按下键盘上的字母时,它会继续写这封信.例如,如果我按下“A”按钮,在我的文本框中我最终会得到“AAAAAAAAAAAAAAAAAAAAAA”,并且它会对图像显示进行编码,因为它会对每个“A”进行编码.

我的问题是:如何限制文本框每个按键只接受一个字母,但仍允许双字母或三字母?所以我可以有一个相同字符的子串,只要我通过在键盘上反复按下来输入它们.

我需要这个,所以只要输入字母被按下,编码的leter就会亮起来.

如果在KeyEventArgs中使用SuppressKeyPress,则可以控制按键何时完成.在我的示例中,我使用文本框作为键入的控件.但这也适用于其他控件……

Dim keyIsDown As Boolean 'marked to give status of keyboard key

Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
    If keyIsDown Then 'if key is already down abort
        e.SuppressKeyPress = True
        Exit Sub
    End If
    keyIsDown = True 'if key was not already down mark it as down now   
End Sub

Private Sub TextBox1_KeyUp(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyUp
    keyIsDown = False 'key has traveled up clear the marker
End Sub
网友评论