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

在WinForm应用程序中,使用TextBox控件来接收用户输入是十分常见的。但有时候,我们需要限制用户的输入,例如只允许输入数字。本文将介绍几种常用的方法,在WinForm TextBox中只能输入数字。

方法一:使用KeyPress事件

我们可以使用KeyPress事件来限制用户输入的内容,只允许数字输入。具体实现方法是:在TextBox的KeyPress事件中添加如下代码:

```csharp

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

{

if (!char.IsDigit(e.KeyChar) && e.KeyChar != (char)Keys.Back)

{

e.Handled = true;

}

}

```

上面的代码中,通过char.IsDigit方法判断按键是否为数字或者是退格键,如果是数字或退格键则不进行处理,否则将e.Handled属性设置为true,表示该键不被接受,从而限制输入内容。

示例:

![方法一示例](https://img-blog.csdn.net/20181030114501230?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoaXJkYXlfaGFuZGxpbmdfMTk5NDAzMTU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

方法二:使用TextChanged事件

我们可以订阅TextBox的TextChanged事件,在该事件中判断TextBox中的文本是否为数字,如果不是,就将TextBox清空。下面是实现代码:

```csharp

private void textBox2_TextChanged(object sender, EventArgs e)

{

if (System.Text.RegularExpressions.Regex.IsMatch(textBox2.Text.Trim(), "[^0-9]"))

{

textBox2.Text = "";

}

}

```

上面代码中,使用正则表达式判断TextBox中的文本是否为数字,如果不是则将TextBox清空。

需要注意的是,如果TextBox中的文本不是数字,通过上述代码清空TextBox中的文本后,TextChanged事件会再次被调用,陷入死循环。因此,应该在清空时临时取消TextChanged事件订阅,再重新订阅。下面是修改后的代码:

```csharp

private void textBox2_TextChanged(object sender, EventArgs e)

{

if (System.Text.RegularExpressions.Regex.IsMatch(textBox2.Text.Trim(), "[^0-9]"))

{

this.textBox2.TextChanged -= new System.EventHandler(this.textBox2_TextChanged);

textBox2.Text = "";

this.textBox2.TextChanged += new System.EventHandler(this.textBox2_TextChanged);

}

}

```

示例:

![方法二示例](https://img-blog.csdn.net/20181030114646402?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoaXJkYXlfaGFuZGxpbmdfMTk5NDAzMTU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

方法三:使用MaskedTextBox控件

MaskedTextBox控件是WinForm中专门用于限制用户输入格式的控件。我们可以设置Mask属性来限制用户只能输入数字。具体实现方法如下:

1. 拖动MaskedTextBox控件到窗体上

2. 选中MaskedTextBox控件,打开属性窗口,找到Mask属性,设置为数字格式,例如:"00000"

示例:

![方法三示例1](https://img-blog.csdn.net/20181030114806332?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoaXJkYXlfaGFuZGxpbmdfMTk5NDAzMTU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

此时只能输入数字,否则将无法输入。

![方法三示例2](https://img-blog.csdn.net/2018103011501641?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoaXJkYXlfaGFuZGxpbmdfMTk5NDAzMTU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

方法四:自定义控件

如果我们要多次使用只允许输入数字的控件,还可以自定义控件。下面是一个简单的示例,在TextBox的基础上封装了只允许输入数字的控件。

1. 新建一个类NumericTextBox,继承自TextBox,添加以下代码:

```csharp

public class NumericTextBox : TextBox

{

public NumericTextBox()

{

this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.NumericTextBox_KeyPress);

}

private void NumericTextBox_KeyPress(object sender, KeyPressEventArgs e)

{

if (!char.IsDigit(e.KeyChar) && e.KeyChar != (char)Keys.Back)

{

e.Handled = true;

}

}

}

```

2. 把上面定义好的类引入到窗体中,然后就可以像使用TextBox一样使用NumericTextBox了。

示例:

![方法四示例](https://img-blog.csdn.net/20181030115718432?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoaXJkYXlfaGFuZGxpbmdfMTk5NDAzMTU1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)

本文介绍了四种限制WinForm TextBox中只能输入数字的方法:使用KeyPress事件、使用TextChanged事件、使用MaskedTextBox控件、自定义控件。读者可以根据具体业务需求选择不同的方法来实现。

壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(93) 打赏

评论列表 共有 0 条评论

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