Sto eseguendo il porting di un'applicazione da WinForms a WPF e ho riscontrato un problema durante il tentativo di ottenere il numero di riga e di colonna per il punto in cui la selezione si trova nella casella di testo. Sono riuscito a farlo abbastanza semplicemente in WinForms, ma WPF ha un modo completamente diverso di implementare un RichTextBox quindi non ho idea di come procedere.C# WPF Numero riga e colonna da RichTextBox
Ecco la mia soluzione WinForms
int line = richTextBox.GetLineFromCharIndex(TextBox.SelectionStart);
int column = richTextBox.SelectionStart - TextBox.GetFirstCharIndexFromLine(line);
LineColumnLabel.Text = "Line " + (line + 1) + ", Column " + (column + 1);
Ciò non funzionerà con WPF, perché non è possibile ottenere l'indice della selezione corrente.
ecco la soluzione LAVORO:
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);
Hai provato qualcosa, per dire come è completamente diverso? –
Probabilmente correlati: http://stackoverflow.com/questions/957441/richtextbox-wpf-does-not-have-string-property-text?rq=1 –
Avrai bisogno di cercare le dipendenze ma, questo non è un compito facile. Ho dato un'occhiata a questo, ho visto quanto lavoro era necessario (o almeno quanto avevo bisogno di imparare) e ho cambiato le specifiche del prodotto in modo da evitarlo! Potrebbe essere meglio cercare una terza parte se il tempo è essenziale per il tuo progetto. – Dave