如何在Windows应用程序中限制或筛选Mask TextBox中的输入

本文关键字:筛选 Mask TextBox 输入 Windows 应用程序 | 更新日期: 2023-09-27 18:24:22

更新:编辑了我的问题以更好地理解我希望

我将我的Mask TextBox属性设置为短日期MM/DD/YYYY00/00/0000,但它可以接受大于12的月份和大于31的日期。如何将月份仅筛选为12,日期仅筛选为31?

如何在Windows应用程序中限制或筛选Mask TextBox中的输入

^([012]'d|30|31)/(0'd|10|11|12)/'d{4}$

在重写的控件中使用上面的正则表达式。

尝试了解决这个问题的方法。我的方法是输入用户的出生日期月份不能高于12,年份必须小于今天的年份(还没有解决如何接受当前年份的问题。

        private void Form1_Load(object sender, EventArgs e)
    {
        maskedTextBox1.Mask = "00/00/0000";
        maskedTextBox1.ValidatingType = typeof(System.DateTime);
        maskedTextBox1.TypeValidationCompleted += new TypeValidationEventHandler(maskedTextBox1_TypeValidationCompleted);

    }
    void maskedTextBox1_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
    {
        if (!e.IsValidInput)
        {
            MessageBox.Show("The data you supplied must be a valid date in the format mm/dd/yyyy.");
        }
        else
        {
            DateTime userDate = (DateTime)e.ReturnValue;
            if (userDate >= DateTime.Now)
            {
                MessageBox.Show("The date in this field must be less or equal than today's date.");
                e.Cancel = true;
            }
        }
    }