问题描述
我正在尝试验证表单上的文本框。我想确保我涵盖了所有可能出问题的东西,例如:不输入任何内容并且输入小于5位的数字。我设置了文本框MaxLength = 5,这很好用,因为如果我超过5位,我什至在屏幕上都看不到它们,因为我已经将其设置为5,所以程序一直在发出哔哔声。但是,如果用户输入的数字少于5位,则无法显示消息框。我知道这与最大长度有关,但我不知道如何解决。无法测试文本框的内容是否小于设置的最大长度?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace tester
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void btnEnter_Click(object sender,EventArgs e)
{
if (txtNumber.Text == "")
{
MessageBox.Show("Please enter your number ");
}
else if (txtNumber.MaxLength > 5)
MessageBox.Show("Please make sure account number is exactly 5 digits");
txtNumber.Focus();
}
}
}
*注意:我已经看到了使用digit方法和按键之类的各种版本,但是我想尽可能简单,只使用maxlength。
解决方法
我只检查空白,然后检查长度是否恰好不是5。这将涵盖两种情况。请注意,我正在使用txtNumber.Text.Length != 5
检查TextBox本身中Text的长度:
private void btnEnter_Click(object sender,EventArgs e)
{
if (txtNumber.Text == "")
{
MessageBox.Show("Please enter your number ");
}
else if (txtNumber.Text.Length != 5)
MessageBox.Show("Please make sure account number is exactly 5 digits");
txtNumber.Focus();
}
else
{
// ... input was good,do something in here? ...
}
}
您还可以使用TextLength直接。
,在您的else if
语句中,检查TextBox.MaxLength
属性
可以在文本框中手动输入的最大字符数。默认值为0,表示没有限制。
有关更多信息,请参见TextBox.MaxLength Property
如果您已经将该属性设置为5(在窗体设计器中)或仅在代码中将不会更改(除非您在某处有另一个代码将其更改为另一个数字)。TextBox.MaxLength
属性与TextBox.Text.Length
或TextBox.TextLength
无关,后者都是文本中的字符数。
控件文本中包含的字符数。
有关更多信息,请参见TextBox.TextLength Property
我会这样编码:
private void btnEnter_Click(object sender,EventArgs e)
{
if (txtNumber.Text == "")
{
MessageBox.Show("Please enter your number ");
}
else if (txtNumber.TextLength < 5)
MessageBox.Show("Please make sure account number is exactly 5 digits");
txtNumber.Focus();
}
}