void ConvertItemClicked(TextBox target, int radix) { this.calculator.Reset(); var lines = LineString.Split(target.Text).ToArray(); var selectionStart = target.SelectionStart; var selectionEnd = target.SelectionStart + target.SelectionLength; TextBoxHelper.GetStartEndLineIndex(lines, selectionStart, selectionEnd, out var lineIndexStart, out var lineIndexEnd); for (int i = lineIndexStart; i <= lineIndexEnd; i++) { if (this.calculator.Calculate(lines[i].Text)) { if (decimal.TryParse(this.calculator.Result, out var value)) { lines[i].Text = ResultConvertHelper.ConvertToResultString(value, radix, ResultConvertHelper.Styles.Prefix); } } } target.Text = LineString.Join(lines); target.SelectionStart = TextBoxHelper.GetCharacterIndexOfLineStartFromLineIndex(lines, lineIndexStart); target.SelectionLength = TextBoxHelper.GetCharacterIndexOfLineEndFromLineIndex(lines, lineIndexEnd) - target.SelectionStart; }
string GetResultTextForCopy(TextBox textBox) { if (textBox == null) { return(null); } if (!int.TryParse((string)textBox.Tag, out var radix)) { return(null); } if (!decimal.TryParse(this.RxResult.Value, out var number)) { return(null); } return(ResultConvertHelper.ConvertToResultString(number, radix, ResultConvertHelper.Styles.Prefix)); }
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null || parameter == null) { return(null); } int radix = int.Parse((string)parameter); if (!decimal.TryParse(value.ToString(), out var number)) { return((radix == 10) ? value.ToString() : ResultConverter.InvalidValueString); } return(ResultConvertHelper.ConvertToResultString( number, radix, ResultConvertHelper.Styles.Separator)); }