/// <summary> /// Parses a string as an <see cref="XMouseButtonCombo"/> value using the specified <see cref="CultureInfo"/>. /// </summary> /// <param name="s">The string to be parsed.</param> /// <param name="culture">The <see cref="CultureInfo"/> for which the string should be parsed.</param> /// <param name="result">The <see cref="XMouseButtonCombo"/> value parsed from <paramref name="s"/>.</param> /// <returns>True if the string was successfully parsed; False otherwise.</returns> public static bool TryParse(string s, CultureInfo culture, out XMouseButtonCombo result) { if (string.IsNullOrEmpty(s)) { result = None; return(true); } XMouseButtons mouseButtons; if (XMouseButtonsConverter.TryParse(s, culture, out mouseButtons)) { result = new XMouseButtonCombo(mouseButtons); return(true); } if (s.Length > 1) { // we want trailing and leading separators to fail the conversion int lastIndex = s.Length - 1; while ((lastIndex = s.LastIndexOf(XMouseButtonsConverter.ButtonSeparator, lastIndex - 1)) > 0) { ModifierFlags modifiers; if (XMouseButtonsConverter.TryParse(s.Substring(lastIndex + 1), culture, out mouseButtons) && ModifierFlagsConverter.TryParse(s.Substring(0, lastIndex), culture, out modifiers)) { result = new XMouseButtonCombo(mouseButtons, modifiers); return(true); } } } result = None; return(false); }
/// <summary> /// Formats the mouse button combination as a string using the specified <see cref="CultureInfo"/>. /// </summary> /// <param name="culture">The <see cref="CultureInfo"/> for which the value should be formatted.</param> /// <returns>The string representation of the mouse button combination.</returns> public string ToString(CultureInfo culture) { string mouseButtons = XMouseButtonsConverter.Format(MouseButtons, culture); if (Modifiers != ModifierFlags.None && MouseButtons != XMouseButtons.None) { return(string.Format("{0}{1}{2}", ModifierFlagsConverter.Format(Modifiers, culture), XMouseButtonsConverter.ButtonSeparator, mouseButtons)); } return(mouseButtons); }