C -WinForm-TextBox中只能输入数字的几种常用方法(C )

在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/

点赞(14) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部