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

2025-01-01 19:17:52
推荐回答(4个)
回答1:

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

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

 

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

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

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

 

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

 

// 设置占位符

this.maskedTextBox1.PromptChar = ' '; 

 

 

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

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

 

 

 

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

回答2:

keypress 不支持组合键,你的Ctrl+V是组合键。把代码放到keydown或keyup里面,并允许ctrl+v组合键通过。

回答3:

很简单,因为你弄错了一个函数,你用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
还不错,希望你采纳。

回答4:

用正则匹配,选择控件的匹配属性可以设置