在C#的WinForm应用程序中,要实现一个只能输入数字的TextBox,可以使用以下几种常用方法:
方法一:利用KeyPress事件进行过滤
在TextBox的KeyPress事件中,可以监听键盘输入的字符,并判断是否为数字。如果是数字,则允许输入,否则禁止输入。
```csharp
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if(!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true; //禁止输入不是数字的字符
}
}
```
方法二:利用TextChanged事件进行过滤
在TextBox的TextChanged事件中,可以检查TextBox的文本是否只包含数字。如果不是数字,则将最后一个非数字字符删除。
```csharp
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(textBox1.Text) && !int.TryParse(textBox1.Text, out _))
{
textBox1.Text = textBox1.Text.Substring(0, textBox1.Text.Length - 1); //删除最后一个非数字字符
textBox1.SelectionStart = textBox1.Text.Length; //将光标移至文本末尾
}
}
```
方法三:使用正则表达式进行验证
通过使用正则表达式,我们可以验证TextBox的文本是否符合某种匹配规则。在本例中,我们可以使用\d来匹配数字。如果不符合规则,则清空TextBox的文本。
```csharp
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(textBox1.Text) && !Regex.IsMatch(textBox1.Text, "^[0-9]+$"))
{
textBox1.Text = ""; //清空文本
}
}
```
这三种方法均能实现只能输入数字的TextBox,可以根据具体需求选择合适的方法。
下面是一个完整的示例,演示了如何在WinForm应用程序中实现只能输入数字的TextBox:
```csharp
using System;
using System.Text.RegularExpressions;
using System.Windows.Forms;
namespace NumericTextBoxExample
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();
}
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true; //禁止输入不是数字的字符
}
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(textBox2.Text) && !int.TryParse(textBox2.Text, out _))
{
textBox2.Text = textBox2.Text.Substring(0, textBox2.Text.Length - 1); //删除最后一个非数字字符
textBox2.SelectionStart = textBox2.Text.Length; //将光标移至文本末尾
}
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(textBox3.Text) && !Regex.IsMatch(textBox3.Text, "^[0-9]+$"))
{
textBox3.Text = ""; //清空文本
}
}
}
}
```
在上述示例中,我们创建了一个包含三个TextBox的WinForm窗体。其中textBox1使用了KeyPress事件进行数字过滤,textBox2使用了TextChanged事件进行数字过滤,textBox3使用了正则表达式进行数字验证。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/
发表评论 取消回复