MaskedTextBox для идентификационного номера с ведущими нулями - PullRequest
0 голосов
/ 21 февраля 2020

Я создал WinForm, в котором есть поле для идентификационного номера сотрудника или студента. Все идентификационные номера состоят из 9 цифр с двумя ведущими нулями (например, 001234567). Как я могу настроить текстовую маску для проверки ввода пользователя и требовать начальных нулей, но предотвратить ввод всех нулей? Я могу сделать это с помощью обычного текстового поля, но заменив его на MaskedTextBox, чтобы в качестве ввода не вводились специальные символы, такие как Windows эмодзи клавиатуры Emoji.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Вы можете использовать следующий код, чтобы удостовериться, что лидер равен «00», и остановить ввод с

, равным нулю.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }



    private void Form1_Load(object sender, EventArgs e)
    {
        maskedTextBox1.Mask = "00/0000000";

        maskedTextBox1.MaskInputRejected += new MaskInputRejectedEventHandler(maskedTextBox1_MaskInputRejected);
    }
    void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
    {
         if (!maskedTextBox1.Text.StartsWith("00")) 
        {
            MessageBox.Show("You must input start with 00");
        }
        else if (maskedTextBox1.Text == "00/0000000") 
        {
            MessageBox.Show("You can not input all number is 0");//
        }
        else if (maskedTextBox1.MaskFull)   
        {
             MessageBox.Show("You cannot enter any more data into the date field. Delete some characters in order to insert more data.");
        }
    }
}

Результат теста:

enter image description here

0 голосов
/ 21 февраля 2020

Вы можете установить маску следующим образом

\0\00000000

Это обеспечит наличие двух лидирующих нулевых литералов перед оставшимися 7 цифрами

...