public static void IfKeys(string value, Action <Keys> successAction, Action <string> failAction)
 {
     try
     {
         Keys keys = (Keys) new KeysConverter().ConvertFromString(value);
         FromString.SafeInvoke <Keys>(successAction, keys);
     }
     catch (Exception)
     {
         FromString.SafeInvoke <string>(failAction, value);
     }
 }
 public static void IfPoint(string value, Action <Point> successAction, Action <string> failAction)
 {
     try
     {
         Point point = (Point) new PointConverter().ConvertFromInvariantString(value);
         FromString.SafeInvoke <Point>(successAction, point);
     }
     catch (Exception)
     {
         FromString.SafeInvoke <string>(failAction, value);
     }
 }
 public static void IfRectangle(string value, Action <Rectangle> successAction, Action <string> failAction)
 {
     try
     {
         Rectangle rect = (Rectangle) new RectangleConverter().ConvertFromInvariantString(value);
         FromString.SafeInvoke <Rectangle>(successAction, rect);
     }
     catch (Exception)
     {
         FromString.SafeInvoke <string>(failAction, value);
     }
 }
 public static void IfEnum <T>(string value, Action <T> successAction, Action <string> failAction)
 {
     try
     {
         T enumValue = (T)Enum.Parse(typeof(T), value);
         FromString.SafeInvoke <T>(successAction, enumValue);
     }
     catch (Exception)
     {
         FromString.SafeInvoke <string>(failAction, value);
     }
 }
        /// <summary>
        /// Tries to parse a string value to an integer value, and executes a specified action delegate on success, or
        /// another action delegate on failure.
        /// </summary>
        /// <param name="value">The string value to parse.</param>
        /// <param name="successAction">The action delegate to execute on success.</param>
        /// <param name="failAction">The action delegate to execute on failure.</param>
        public static void IfInt(string value, Action <int> successAction, Action <string> failAction)
        {
            int i;

            if (int.TryParse(value, out i))
            {
                FromString.SafeInvoke <int>(successAction, i);
            }
            else
            {
                FromString.SafeInvoke <string>(failAction, value);
            }
        }
        /// <summary>
        /// Tries to parse a string value to a TimeSpan value, and executes a specified action delegate on success, or
        /// another action delegate on failure.
        /// </summary>
        /// <param name="value">The string value to parse.</param>
        /// <param name="successAction">The action delegate to execute on success.</param>
        /// <param name="failAction">The action delegate to execute on failure.</param>
        public static void IfTimeSpan(string value, Action <TimeSpan> successAction, Action <string> failAction)
        {
            TimeSpan timeSpan;

            if (TimeSpan.TryParse(value, out timeSpan))
            {
                FromString.SafeInvoke <TimeSpan>(successAction, timeSpan);
            }
            else
            {
                FromString.SafeInvoke <string>(failAction, value);
            }
        }
        /// <summary>
        /// Tries to parse a string value to an double value, and executes a specified action delegate on success, or
        /// another action delegate on failure.
        /// </summary>
        /// <param name="value">The string value to parse.</param>
        /// <param name="successAction">The action delegate to execute on success.</param>
        /// <param name="failAction">The action delegate to execute on failure.</param>
        public static void IfDouble(string value, Action <double> successAction, Action <string> failAction)
        {
            double d;

            if (double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out d))
            {
                FromString.SafeInvoke <double>(successAction, d);
            }
            else
            {
                FromString.SafeInvoke <string>(failAction, value);
            }
        }
        /// <summary>
        /// Tries to parse a string value to an boolean value, and executes a specified action delegate on success, or
        /// another action delegate on failure.
        /// </summary>
        /// <param name="value">The string value to parse.</param>
        /// <param name="successAction">The action delegate to execute on success.</param>
        /// <param name="failAction">The action delegate to execute on failure.</param>
        public static void IfBool(string value, Action <bool> successAction, Action <string> failAction)
        {
            bool b;

            if (bool.TryParse(value, out b))
            {
                FromString.SafeInvoke <bool>(successAction, b);
            }
            else
            {
                FromString.SafeInvoke <string>(failAction, value);
            }
        }
        /// <summary>
        /// Tries to parse a string value to two integer value, and executes a specified action delegate on success, or
        /// another action delegate on failure.
        /// </summary>
        /// <param name="value">The string value to parse.</param>
        /// <param name="separator">The character that separates the two integer values.</param>
        /// <param name="successAction">The action delegate to execute on success.</param>
        /// <param name="failAction">The action delegate to execute on failure.</param>
        public static void IfIntPair(string value, char separator, IntPairAction successAction, Action <string> failAction)
        {
            string[] pair = value.Split(separator);
            int      i, j;

            if ((pair.Length > 1) && int.TryParse(pair[0].Trim(), out i) && int.TryParse(pair[1].Trim(), out j))
            {
                if (successAction != null)
                {
                    successAction(i, j);
                    return;
                }
            }

            FromString.SafeInvoke <string>(failAction, value);
        }
 public static void IfHtmlColor(string value, Action <Color> successAction, Action <string> failAction)
 {
     try
     {
         Color color = ColorTranslator.FromHtml(value);
         if (!color.IsEmpty)
         {
             FromString.SafeInvoke <Color>(successAction, color);
         }
         else
         {
             FromString.SafeInvoke <string>(failAction, value);
         }
     }
     catch
     {
         FromString.SafeInvoke <string>(failAction, value);
     }
 }