Przenoszę aplikację z WinForms do WPF i uderzyłem w przeszkodę, próbując uzyskać wiersz i numer kolumny dla miejsca, w którym zaznaczenie znajduje się w polu tekstowym. Udało mi się to zrobić po prostu w WinForms, ale WPF ma zupełnie inny sposób implementacji RichTextBox, więc nie mam pojęcia, jak to zrobić.C# Wiersz WPF i kolumna z RichTextBox
Oto moje WinForms rozwiązanie
int line = richTextBox.GetLineFromCharIndex(TextBox.SelectionStart);
int column = richTextBox.SelectionStart - TextBox.GetFirstCharIndexFromLine(line);
LineColumnLabel.Text = "Line " + (line + 1) + ", Column " + (column + 1);
To nie będzie działać z WPF, ponieważ nie można uzyskać indeks bieżącego zaznaczenia.
Oto roztwór roboczy:
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);
Czy próbowałeś czegoś, aby powiedzieć, jak to jest zupełnie inaczej? –
Prawdopodobnie powiązane: http://stackoverflow.com/questions/957441/richtextbox-wpf-does-not-have-string-property-text?rq=1 –
Będziesz musiał sprawdzić zależności, ale to nie jest łatwe zadanie. Przyjrzałem się temu, widziałem, ile pracy było potrzebne (lub przynajmniej ile potrzebowałem się uczyć) i zmieniłem specyfikację produktu, aby uniknąć tego! Być może najlepiej poszukasz osoby trzeciej, jeśli czas jest niezbędny dla twojego projektu. – Dave