按键控制文本字段输入






2.71/5 (21投票s)
2007年7月4日
2分钟阅读

80873

355
显示了在控件按键事件中控制输入的要点。
引言
在创建表单时,特别是那些涉及数据库的表单,控制文本框的输入字符通常很重要、有用或必要。 你经常需要只允许数字、只允许字母、只允许小数格式等等。 本文将向你展示如何在任何控件的按键按下事件中控制这些输入的基本方法。
背景
我经常觉得恼火的是,Microsoft 文本框中没有选项可以指定我们想要的输入形式。 因此,我开始开发一组代码片段,以便在用户尝试将数据提交到数据库之前,验证表单中文本框的输入。
Using the Code
代码很简单。 只需要将其复制并粘贴到任何给定控件的按键按下事件中,尽管它专门为具有字母数字字段的控件(如组合框和文本框)而设计。
数字输入
If Char.IsNumber(e.KeyChar) = False Then
If e.KeyChar = CChar(ChrW(Keys.Back)) or e.KeyChar = CChar(ChrW(
Keys.Space)) Then
e.Handled = False
Else
e.Handled = True
End If
End If
字母输入
If Char.IsLetter(e.KeyChar) = False Then
If e.KeyChar = CChar(ChrW(Keys.Back)) or e.KeyChar = CChar(ChrW(
Keys.Space)) Then
e.Handled = False
Else
e.Handled = True
End If
End If
字母数字输入
If Char.IsLetterOrDigit(e.KeyChar) = False Then
If e.KeyChar = CChar(ChrW(Keys.Back)) or e.KeyChar = CChar(ChrW(
Keys.Space)) Then
e.Handled = False
Else
e.Handled = True
End If
End If
小数输入
If Char.IsNumber(e.KeyChar) = False Then
If e.KeyChar = CChar(ChrW(Keys.Back)) Or e.KeyChar =
CChar(".") or e.KeyChar = CChar(ChrW(Keys.Space)) Then
e.Handled = False
Else
e.Handled = True
End If
End If
如上所示,我们看到为小数位定义了一个例外。 这可以对任何特殊字符或任何其他字母或数字进行操作。 另一个有趣的要点是,在处理多个需要相同验证形式的文本框(或其他控件)时,这些代码片段仍然适用。 例如
多个文本框上的数字输入
Private Sub TextBox1_KeyPress(ByVal sender As System.Object, ByVal e As _
System.Windows.Forms.KeyPressEventArgs) Handles TexBox1.KeyPress, _
TextBox2.KeyPress, TextBox3.KeyPress, TextBox4.KeyPress
If Char.IsNumber(e.KeyChar) = False Then
If e.KeyChar = CChar(ChrW(Keys.Back)) or e.KeyChar = CChar(
ChrW(Keys.Space)) Then
e.Handled = False
Else
e.Handled = True
End If
End If
End If
请注意,通过此语句处理的 keypress
事件数量。 文本框 1 到 4 都通过一个 Sub
实时验证。
关注点
使用 IsNumber
和 IsLetter
函数时,特别令人恼火的一件事是,它们不仅会阻止所有特殊字符,还会阻止退格键、删除键、空格键以及复制和粘贴功能。 因此,有必要为退格键和空格键创建例外,以便它们也能像任何字母和/或数字一样工作。 由于我没有包含复制、剪切和粘贴的例外,因此这些功能将无法工作。 数字验证也允许使用数字键盘,因此从键盘上的任何位置输入的数字都可以工作。
上面的 ZIP 文件包含此项目的源代码。 该项目中除了包含 8 个文本框和上述代码之外,别无其他内容。 但是,有几个代码片段文件会将上述内容添加到你的代码片段中,位于通用代码模式 -> 验证下。
历史
- 2007 年 7 月 4 日 — 发布原始版本
- 2007 年 10 月 31 日 — 更新源代码