TextBox中只允许输入数字的语句

superchenxx 2008-11-30 08:57:13
Private Sub TextBox1_KeyPress(ByVal sender As _
Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles TextBox1.KeyPress

If e.KeyChar >= "0" And e.KeyChar <= "9" Then
Else
e.Handled = True
Beep()
End If

End Sub
--------------------------------------------------------------------
这样的话,对键盘输入好像是没有问题,但是却不能从这个textbox中ctrl+c了。
而msdn里说非字符键是不会引发KeyPress事件的,这到底是什么原因呢?而且这样写会出问题吗?
...全文
207 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
superchenxx 2008-12-13
  • 打赏
  • 举报
回复
谢谢大家,vb代码我都试过了,9楼的最好,不过还是没有解决ctrl+c复制的问题
qap22 2008-12-07
  • 打赏
  • 举报
回复
不懂,up
g1y9d861213 2008-12-07
  • 打赏
  • 举报
回复
加入一个验证控件 用正则表达式来表示:
 ^[1-9]\d*|0$
g1y9d861213 2008-12-07
  • 打赏
  • 举报
回复
加入一个验证控件 用正则表达式来表示:
 ^[1-9]\d*|0$
soloist007 2008-12-02
  • 打赏
  • 举报
回复
使用textchange事件
sanji09 2008-12-02
  • 打赏
  • 举报
回复
真无奈了。。。
限制只能输入数字的话,一般都是这么些的,网上有的是。
再说了,只是做对日软件开发的。你至于吗! 唉 注意素质
sanji09 2008-12-01
  • 打赏
  • 举报
回复

''-------------------------------------------------
'' [処理名]:txtTime2_KeyUp
'' [機 能]:数字入力を判断する
'' [引 数]:なし
'' [返 値]:なし
'' [備 考]:なし
'' [作成者]:大連
'' [作成日]:08.11.19
''-------------------------------------------------
Private Sub txtTime2_KeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtTime2.KeyUp
Dim str As String = ""
If (e.KeyValue > 47 And e.KeyValue < 58) Or (e.KeyValue > 95 And e.KeyValue < 106) Or (e.KeyValue = 8) Or (e.KeyValue = 45) Or (e.KeyValue = 46) Then
str = txtTime2.Text
Else
txtTime2.Text = str
txtTime2.Focus()
End If

End Sub
guoruixing 2008-12-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sanji09 的回复:]
VB.NET code
''-------------------------------------------------
'' [処理名]:txtTime2_KeyUp
'' [機 能]:数字入力を判断する
'' [引 数]:なし
'' [返 値]:なし
'' [備 考]:なし
'' [作成者]:大連
'' [作成日]:08.11.19
''-------------------------------------------------
Private Sub txtTime2_KeyUp(ByVal sender As System.Object, ByVal e As System.Windo…
[/Quote]

严重BS 8楼的狗,照抄6楼的代码也就算了,还加上什么“作者、日期、日语”,滚回日本去吧,真垃圾
eastkiki 2008-12-01
  • 打赏
  • 举报
回复

Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
'Keyを判断する
If Char.IsNumber(e.KeyChar) OrElse Asc(e.KeyChar) = Keys.Back Then
e.Handled = False
Else
e.Handled = True
End If
End Sub
ken_sniper 2008-11-30
  • 打赏
  • 举报
回复
在当前Form的load事件里添加:

this.textBox1.LostFocus += new EventHandler(TextBox1_LostFocus);


然后自己定义这个事件,你可以直接复制下面的代码:

private void TextBox1_LostFocus(object sender, EventArgs e)
{
MessageBox.Show("11111");
//写你的字符判断逻辑
MessageBox.Show("11111");
//写你的查询逻辑 例如:
string txt = textBox1.Text.Trim();
try
{
int number = Int32.Parse(txt);
}
catch (System.Exception e)
{
MessageBox.Show("文本不是数字");
}
}
空心兜兜 2008-11-30
  • 打赏
  • 举报
回复
关注下
superchenxx 2008-11-30
  • 打赏
  • 举报
回复
3楼的不行,语法错误
gba8jing 2008-11-30
  • 打赏
  • 举报
回复
Private Sub TextBox1_KeyPress(ByVal sender As _
Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) _
Handles TextBox1.KeyPress

If IsNumber(textbox1.text) = true
Else
e.Handled = True
Beep()
End If

End Sub
长沙三毛 2008-11-30
  • 打赏
  • 举报
回复
只允许输入数字,是输入同步控制,要考虑三种情况:1)键盘输入;2)快捷键输入;3)上下文菜单输入。请参考拙文: 定制C# TextBox中只允许输入数字的解决方法
kzccomputer 2008-11-30
  • 打赏
  • 举报
回复
这样就只能输入0-9的数字了:
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If Not (Asc(e.KeyChar) >= 48 And Asc(e.KeyChar) <= 57 Or Asc(e.KeyChar) = 8) Then
e.KeyChar = ""
End If
End Sub
tjficcbw 2008-11-30
  • 打赏
  • 举报
回复

Private Sub textNo_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles textNo.KeyUp
Dim str As String = ""
If (e.KeyValue > 47 And e.KeyValue < 58) Or (e.KeyValue > 95 And e.KeyValue < 106) Or (e.KeyValue = 8) Or (e.KeyValue = 45) Or (e.KeyValue = 46) Then
str = sender.Text
Else
sender.Text = str
sender.Focus()
End If
End Sub


16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧