我正在将应用程序从 WinForms 移植到 WPF,但在尝试获取文本框中选择的行号和列号时遇到了障碍。我能够在 WinForms 中非常简单地做到这一点,但 WPF 有一种完全不同的方式来实现 RichTextBox,所以我不知道如何去做。
这是我的 WinForms 解决方案
int line = richTextBox.GetLineFromCharIndex(TextBox.SelectionStart);
int column = richTextBox.SelectionStart - TextBox.GetFirstCharIndexFromLine(line);
LineColumnLabel.Text = "Line " + (line + 1) + ", Column " + (column + 1);
这不适用于 WPF,因为您无法获取当前选择的索引。
这是工作解决方案:
int lineNumber;
textBox.CaretPosition.GetLineStartPosition(-int.MaxValue, out lineNumber);
int columnNumber = richTextBox.CaretPosition.GetLineStartposition(0).GetOffsetToPosition(richTextBox.CaretPosition);
if (lineNumber == 0)
columnNumber--;
statusBarLineColumn.Content = string.Format("Line {0}, Column {1}", -lineNumber + 1, columnNumber + 1);