如何在C# winform中使TEXTBOX只能输入数字,并支持Ctrl+V粘贴?

privatevoidtextBox1_KeyPress(objectsender,KeyPressEventArgse){if(e.KeyChar=='\r'||(e.... private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\r' || (e.KeyChar >= '0' && e.KeyChar <= '9') || e.KeyChar == 8 || e.KeyChar == 46 || e.KeyChar == 0x08)
{
e.Handled = false;
}
else
{
e.Handled = true;
MessageBox.Show("不能输入中文状态下的数字,解决方法:把输入法关了,重新输入数字。");
return;
}
}

上面的能限制只输入数字,但是不支持Ctrl+V粘贴,请问如何解决。
展开
 我来答
jlyzlzb
2013-03-19 · TA获得超过163个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:88.7万
展开全部

其实你用不着这么麻烦的。

同样是输入框,作用仅仅是采集数据而已。

 

MaskedTextBox 控件能非常方便地控制可输入的字符格式。

根据你上面的需求,用 MaskedTextBox控件代替TextBox控件。

1.设置Mask属性为999999999999 (代表只能输入数字,且位数为12。你有多少个9就代表能输入多少个数字,随便你设置)

 

2.设置 PromptChar 属性的值为空字符,即一个空格(注意:如果不设置默认为下划线,会影响美观)。也可以编码实现,如下:

 

// 设置占位符

this.maskedTextBox1.PromptChar = ' '; 

 

 

做完以上操作,你的需求就算满足了。

只能输入数字,且可以粘贴(只有数字才粘得进去,自动过滤)

 

 

 

图中红框中的控件就是 MaskedTextBox ,其余两个输入框是TextBox。从外观上看,没有任何区别。

追问
我只用TextBox这个。
帐号已注销
推荐于2017-12-15 · TA获得超过2184个赞
知道小有建树答主
回答量:631
采纳率:100%
帮助的人:643万
展开全部
keypress 不支持组合键,你的Ctrl+V是组合键。把代码放到keydown或keyup里面,并允许ctrl+v组合键通过。
更多追问追答
追问
那怎么修改,你帮我看看。
追答
以下代码可以实现你需要的功能,但如果粘贴板中的内容含有字母,那么粘贴时并不能拦截,只能拦截键盘输入的非数字。
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (!(Char.IsNumber((char)e.KeyValue)) && e.KeyValue != 13 && e.KeyValue != (char)8 && !(e.KeyCode==Keys.V && e.Control ))
{
e.SuppressKeyPress =true ;
}
}
---------------------------------------------------------------------------------------------------------------------------
C#没有可以直接读取剪贴板内容的函数或类,如果要读取,必须再继续编写很多代码,如果你感兴趣,可以查阅相关资料。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小娇朋友
2013-03-17 · TA获得超过1.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:2%
帮助的人:1621万
展开全部
很简单,因为你弄错了一个函数,你用val(text1.text)<10的本意可能是想检测小于10位的录入数字吧,但是用错了,因为你随便录入到第二个数字时就可能已经>10了,所以下面的语句不会生效了,TEXT1里也就没有数字显示,你要改用LEN来检测长度就行。正确的语句是:
Dim cleardisplay As Boolean

Private Sub Command1_Click(Index As Integer)
If cleardisplay Then
Text1.Text = ""
clesrdisplay = False
End If

If Len(Text1.Text) < 10 Then
Text1.Text = Text1.Text + Command1(Index).Caption
End If
End Sub
还不错,希望你采纳。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
正牌小卡
2013-03-16 · TA获得超过207个赞
知道小有建树答主
回答量:499
采纳率:66%
帮助的人:150万
展开全部
用正则匹配,选择控件的匹配属性可以设置
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式