检查文本框的MaxLength是否小于5

问题描述

我正在尝试验证表单上的文本框。我想确保我涵盖了所有可能出问题的东西,例如:不输入任何内容并且输入小于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.LengthTextBox.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();
        }
    }