Пример #1
0
        public static string GetNationalCode(string value)
        {
            if (value.IsNullOrEmpty())
            {
                return("");
            }
            value = value.Trim();
            if (value.Length > 12)
            {
                value = value.Substring(0, 12);
            }
            else if (value.Length != 12 && value.Length > 10)
            {
                value = value.Substring(0, 10);
            }
            long numberValue;

            if (long.TryParse(value, out numberValue))
            {
                return(value.Substring(0, 3) + "-" + value.Substring(3, 6) + "-" + value.Substring(9, 1));
            }
            else if (!InputBoxValidationHelper.IsNationalCode(value))
            {
                return("");
            }
            return(value);
        }
Пример #2
0
        public static string FormatTextValueWithInputType(IInputBox control, string value)
        {
            switch (control.InputType)
            {
            case InputBoxValidationHelper.InputTypes.AllCharacters:
                return(value);

            case InputBoxValidationHelper.InputTypes.Number:
                long numberValue;
                if (!long.TryParse(value, out numberValue))
                {
                    return("");
                }
                return(value);

            case InputBoxValidationHelper.InputTypes.DecimalNumber:
                decimal decimalNumberValue;
                if (!decimal.TryParse(value, out decimalNumberValue))
                {
                    return("");
                }
                return(value);

            case InputBoxValidationHelper.InputTypes.ShortInt:
                short shortValue;
                if (!short.TryParse(value, out shortValue))
                {
                    return("");
                }
                return(value);

            case InputBoxValidationHelper.InputTypes.Int:
                int intValue;
                if (!int.TryParse(value, out intValue))
                {
                    return("");
                }
                return(value);

            case InputBoxValidationHelper.InputTypes.LongInt:
                long longValue;
                if (!long.TryParse(value, out longValue))
                {
                    return("");
                }
                return(value);

            case InputBoxValidationHelper.InputTypes.Float:
                float floatValue;
                if (!float.TryParse(value, out floatValue))
                {
                    return("");
                }
                return(value);

            case InputBoxValidationHelper.InputTypes.Double:
                double doubleValue;
                if (!double.TryParse(value, out doubleValue))
                {
                    return("");
                }
                return(value);

            case InputBoxValidationHelper.InputTypes.Decimal:
                decimal decimalValue;
                if (!decimal.TryParse(value, out decimalValue))
                {
                    return("");
                }
                return(value);

            case InputBoxValidationHelper.InputTypes.PersianText:
                if (value.Where(t => !InputBoxValidationHelper.IsPersianChar(t)).Count() > 0)
                {
                    return("");
                }
                return(value);

            case InputBoxValidationHelper.InputTypes.EnglishText:
                if (value.Where(t => !InputBoxValidationHelper.IsEnglishChar(t)).Count() > 0)
                {
                    return("");
                }
                return(value);

            case InputBoxValidationHelper.InputTypes.Mobile:
                return(GetMobile(value));

            case InputBoxValidationHelper.InputTypes.NationalCode:
                return(GetNationalCode(value));

            case InputBoxValidationHelper.InputTypes.Email:
                if (!value.Contains('@'))
                {
                    return("");
                }
                return(value);

            default:
                throw new Exception();
            }
        }
Пример #3
0
        public static bool CheckKeyPressed(char keyChar, IInputBox control, out string errorText)
        {
            if (control.IllegalCharacters.Contains(keyChar))
            {
                errorText = ("حروف " + string.Join <char>(",", control.IllegalCharacters.ToArray()) + " مجاز نیستند");
                return(false);
            }
            else
            {
                switch (control.InputType)
                {
                case InputBoxValidationHelper.InputTypes.AllCharacters:
                    break;

                case InputBoxValidationHelper.InputTypes.Number:
                    if (!char.IsControl(keyChar) && !char.IsDigit(keyChar) && keyChar != CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0])
                    {
                        errorText = ("فقط عدد وارد کنید");
                        return(false);
                    }
                    else if (keyChar == CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0] && control.SelectionStart != 0)
                    {
                        errorText = ("عدد را به صورت صحیح وارد کنید");
                        return(false);
                    }
                    break;

                case InputBoxValidationHelper.InputTypes.DecimalNumber:
                    if (keyChar == CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0] && control.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0]))
                    {
                        errorText = ("عدد اعشاری را به صورت صحیح وارد کنید");
                        return(false);
                    }
                    else if (keyChar == CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0] && control.SelectionStart != 0)
                    {
                        errorText = ("عدد را به صورت صحیح وارد کنید");
                        return(false);
                    }
                    else if (!char.IsControl(keyChar) && !char.IsDigit(keyChar) && keyChar != CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0] && keyChar != CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0])
                    {
                        errorText = ("فقط عدد وارد کنید");
                        return(false);
                    }
                    break;

                case InputBoxValidationHelper.InputTypes.PersianText:
                    if (!char.IsControl(keyChar) && !InputBoxValidationHelper.IsPersianChar(keyChar))
                    {
                        errorText = ("فقط حروف فارسی وارد کنید");
                        return(false);
                    }
                    break;

                case InputBoxValidationHelper.InputTypes.EnglishText:
                    if (!char.IsControl(keyChar) && !InputBoxValidationHelper.IsEnglishChar(keyChar))
                    {
                        errorText = ("فقط حروف انگلیسی وارد کنید");
                        return(false);
                    }
                    break;

                case InputBoxValidationHelper.InputTypes.ShortInt:
                    if (!char.IsControl(keyChar) && !char.IsDigit(keyChar) && keyChar != CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0])
                    {
                        errorText = ("فقط عدد وارد کنید");
                        return(false);
                    }
                    else if (keyChar == CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0] && control.SelectionStart != 0)
                    {
                        errorText = ("عدد را به صورت صحیح وارد کنید");
                        return(false);
                    }
                    else if (char.IsDigit(keyChar) || keyChar == CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0])
                    {
                        string text = control.GetNewText(keyChar);
                        if (text == "-")
                        {
                            text = "-0";
                        }
                        short t;
                        if (!short.TryParse(text.Replace(CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator[0].ToString(), ""), out t))
                        {
                            errorText = (string.Format("محدوده عدد باید بین {0} و {1} باشد", short.MinValue.ToString(), short.MaxValue.ToString()));
                            return(false);
                        }
                    }
                    break;

                case InputBoxValidationHelper.InputTypes.Int:
                    if (!char.IsControl(keyChar) && !char.IsDigit(keyChar) && keyChar != CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0])
                    {
                        errorText = ("فقط عدد وارد کنید");
                        return(false);
                    }
                    else if (keyChar == CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0] && control.SelectionStart != 0)
                    {
                        errorText = ("عدد را به صورت صحیح وارد کنید");
                        return(false);
                    }
                    else if (char.IsDigit(keyChar) || keyChar == CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0])
                    {
                        string text = control.GetNewText(keyChar);
                        if (text == "-")
                        {
                            text = "-0";
                        }
                        int t;
                        if (!int.TryParse(text.Replace(CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator[0].ToString(), ""), out t))
                        {
                            errorText = (string.Format("محدوده عدد باید بین {0} و {1} باشد", int.MinValue.ToString(), int.MaxValue.ToString()));
                            return(false);
                        }
                    }
                    break;

                case InputBoxValidationHelper.InputTypes.LongInt:
                    if (!char.IsControl(keyChar) && !char.IsDigit(keyChar) && keyChar != CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0])
                    {
                        errorText = ("فقط عدد وارد کنید");
                        return(false);
                    }
                    else if (keyChar == CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0] && control.SelectionStart != 0)
                    {
                        errorText = ("عدد را به صورت صحیح وارد کنید");
                        return(false);
                    }
                    else if (char.IsDigit(keyChar) || keyChar == CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0])
                    {
                        string text = control.GetNewText(keyChar);
                        if (text == "-")
                        {
                            text = "-0";
                        }
                        long t;
                        if (!long.TryParse(text.Replace(CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator[0].ToString(), ""), out t))
                        {
                            errorText = (string.Format("محدوده عدد باید بین {0} و {1} باشد", long.MinValue.ToString(), long.MaxValue.ToString()));
                            return(false);
                        }
                    }
                    break;

                case InputBoxValidationHelper.InputTypes.Float:
                    if (keyChar == CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0] && control.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0]) && keyChar != CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0])
                    {
                        errorText = ("عدد اعشاری را به صورت صحیح وارد کنید");
                        return(false);
                    }
                    else if (keyChar == CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0] && control.SelectionStart != 0)
                    {
                        errorText = ("عدد را به صورت صحیح وارد کنید");
                        return(false);
                    }
                    else if (!char.IsControl(keyChar) && !char.IsDigit(keyChar) && keyChar != CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0])
                    {
                        errorText = ("فقط عدد وارد کنید");
                        return(false);
                    }
                    else if (char.IsDigit(keyChar) || keyChar == CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0])
                    {
                        string text = control.GetNewText(keyChar);
                        if (text == "-")
                        {
                            text = "-0";
                        }
                        float t;
                        if (!float.TryParse(text.Replace(CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator[0].ToString(), ""), out t))
                        {
                            errorText = (string.Format("محدوده عدد باید بین {0} و {1} باشد", float.MinValue.ToString(), float.MaxValue.ToString()));
                            return(false);
                        }
                    }
                    break;

                case InputBoxValidationHelper.InputTypes.Double:
                    if (keyChar == CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0] && control.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0]) && keyChar != CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0])
                    {
                        errorText = ("عدد اعشاری را به صورت صحیح وارد کنید");
                        return(false);
                    }
                    else if (keyChar == CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0] && control.SelectionStart != 0)
                    {
                        errorText = ("عدد را به صورت صحیح وارد کنید");
                        return(false);
                    }
                    else if (!char.IsControl(keyChar) && !char.IsDigit(keyChar) && keyChar != CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0])
                    {
                        errorText = ("فقط عدد وارد کنید");
                        return(false);
                    }
                    else if (char.IsDigit(keyChar) || keyChar == CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0])
                    {
                        string text = control.GetNewText(keyChar);
                        if (text == "-")
                        {
                            text = "-0";
                        }
                        double t;
                        if (!double.TryParse(text.Replace(CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator[0].ToString(), ""), out t))
                        {
                            errorText = (string.Format("محدوده عدد باید بین {0} و {1} باشد", double.MinValue.ToString(), double.MaxValue.ToString()));
                            return(false);
                        }
                    }
                    break;

                case InputBoxValidationHelper.InputTypes.Decimal:
                    if (keyChar == CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0] && control.Text.Contains(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0]) && keyChar != CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0])
                    {
                        errorText = ("عدد اعشاری را به صورت صحیح وارد کنید");
                        return(false);
                    }
                    else if (keyChar == CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0] && control.SelectionStart != 0)
                    {
                        errorText = ("عدد را به صورت صحیح وارد کنید");
                        return(false);
                    }
                    else if (!char.IsControl(keyChar) && !char.IsDigit(keyChar) && keyChar != CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator[0])
                    {
                        errorText = ("فقط عدد وارد کنید");
                        return(false);
                    }
                    else if (char.IsDigit(keyChar) || keyChar == CultureInfo.CurrentCulture.NumberFormat.NegativeSign[0])
                    {
                        string text = control.GetNewText(keyChar);
                        if (text == "-")
                        {
                            text = "-0";
                        }
                        decimal t;
                        if (!decimal.TryParse(text.Replace(CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator[0].ToString(), ""), out t))
                        {
                            errorText = (string.Format("محدوده عدد باید بین {0} و {1} باشد", decimal.MinValue.ToString(), decimal.MaxValue.ToString()));
                            return(false);
                        }
                    }
                    break;

                case InputBoxValidationHelper.InputTypes.Mobile:
                    if (!char.IsControl(keyChar) && !char.IsDigit(keyChar))
                    {
                        errorText = ("فقط عدد وارد کنید");
                        return(false);
                    }
                    else if (char.IsDigit(keyChar))
                    {
                        if (control.SelectionStart == 0 && keyChar != '0')
                        {
                            errorText = ("شماره موبایل باید با 09 شروع شود");
                            return(false);
                        }
                        else if (control.SelectionStart == 1 && keyChar != '9')
                        {
                            errorText = ("شماره موبایل باید با 09 شروع شود");
                            return(false);
                        }
                        else
                        {
                            string text = control.GetNewText(keyChar);
                            if (text.Length > 11)
                            {
                                errorText = ("شماره موبایل باید 11 رقمی باشد");
                                return(false);
                            }
                        }
                    }
                    break;

                case InputBoxValidationHelper.InputTypes.NationalCode:
                    if (!char.IsControl(keyChar) && !char.IsDigit(keyChar))
                    {
                        errorText = ("فقط عدد وارد کنید");
                        return(false);
                    }
                    else if (char.IsDigit(keyChar))
                    {
                        //if (keyChar == '-' && (control.SelectionStart != 3 && control.SelectionStart != 10))
                        //{
                        //    errorText = ("فقط عدد وارد کنید");
                        //    return false;
                        //}
                        //else
                        //{
                        string text = control.GetNewText(keyChar);
                        if (text.Length > 12)
                        {
                            errorText = ("کد ملی نباید از 12 حرف بیشتر باشد");
                            return(false);
                        }
                        //}
                    }
                    break;

                case InputBoxValidationHelper.InputTypes.Email:
                    break;

                default:
                    throw new Exception();
                }
            }
            errorText = null;
            return(true);
        }