用户控件中的自定义属性验证消息代码

时间:2013-08-21 05:53:30

标签: c# validation properties user-controls

如何为Property中定义的自定义UserControl添加验证码。请考虑以下代码:

 public class Date

{
    private int month = 7;  // Backing store 

    public int Month
    {
        get
        {
            return month;
        }
        set
        {
            if ((value > 0) && (value < 13))
            {
                month = value;
            }
        }
    }
}

它会检查Month值是否在1到12之间,但我想要显示无效输入消息,以防它无效。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

如果值不在1到12之间,你可以扔掉,例如一个InvalidOperationException并在主线程中处理它。

public int Month
{
    get
    {
        return month;
    }
    set
    {
        if ((value > 0) && (value < 13))
        {
            month = value;
        }
        else throw new InvalidOperationException("Invalid month");
    }
}

然后就像......

private void textBox1_Validating(object sender, CancelEventArgs e)
{
   try
   {
      date.Month = Convert.ToInt32(textbox1.Text);
   }
   catch(InvalidOperationException ex)
   {
      e.Cancel = true;
      textBox1.Select(0, textBox1.Text.Length);

      // some message about invalid value
   }
}

其中textBox1_Validating是文本框的验证事件处理程序。