程序使用C#编写,使用了TabControl控件,在TabCntrol中有Panel和文本框。需要判断文本框中输入的字符串是否为整数、实数或者日期。我使用的是光标离开文本框时进行判断。但是这样就会在切换Page页的时候也会触发判断文本框中的内容是否符合要求,这样的话,程序会连续弹出提示窗口。请问,这种情况应该怎么处理?

解决方案 »

  1.   

    为什么不在TextChanged中判断呢?
      

  2.   

    你的这个需求,在leave事件里判断,确实不合理.
    可依楼上说的在TextChanged事件里判断
      

  3.   

    TextChanged无疑也是不合理的
    假设要求日期,我输个20的话就会报错了
      

  4.   

    Leave事件没错,切换Page本就应该保证输入正确
      

  5.   

    TextChanged或者提交按钮里判断
      

  6.   

    本来楼主的判断就是要进行类型判断的,在TextChanged中判断完全可以的。
      

  7.   

    TextChanged中判断,写好验证,切换page的时候给提示,然后返回
      

  8.   

    无论是否在Page里,还是在一般的界面容器里,使用光标或焦点离开来判断都不太好。
    可以在用户最后点确定的时候或真正取数据运算的时候再对控件的值进行验证是一个好的选择。
      

  9.   

    Leave事件验证后,可以用tip提示。最后提交的时候再用MessageBox提示。这样应该可以吧。
      

  10.   

    在textchange中如何判断输入的日期格式是不是正确呢?我不使用日期控件,而是提供文本框输入
      

  11.   

    可通过正则来验证输入的日期格式,下面一是验证的方法:
    #region 日期验证(YYYY-MM-DD)
    /// <summary>
    /// 日期验证(YYYY-MM-DD)
    /// </summary>
    /// <param name="InputStr">要验证的字符</param>
    /// <returns></returns>
    public static bool ValidateDataTime(string InputStr)
    {
    if( InputStr != "" )
    {
    if (Regex.IsMatch(InputStr.Trim(' '),@"^((((1[6-9]|[2-9]\d)\d{2})-(0?[13578]|1[02])-(0?[1-9]|[12]\d|3[01]))|(((1[6-9]|[2-9]\d)\d{2})-(0?[13456789]|1[012])-(0?[1-9]|[12]\d|30))|(((1[6-9]|[2-9]\d)\d{2})-0?2-(0?[1-9]|1\d|2[0-8]))|(((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))-0?2-29-))$"))
    return true ;
    else
    return false ;
    }
    return false ;
    }
    #endregion
      

  12.   

    TO:ydsunny
    判断字符串是不是符合日期格式,我有这个函数。但是我需要在TextChange的时候进行判断。如果在Leave事件发生时进行判断,仍然会带来切换TabPage的时候无法正确验证字符串是否为日期
      

  13.   

    你在TextChanged事件里判断也行吧输入的文字长度等于10时再调用该函数判断。或直接对返回false不做任何处理