2009-02-19 11 views
15

Tworzę edytor tekstu dla określonego języka domeny. Używam WPF RichTextBox jako podstawowej kontroli. Nie wiem, jak z wdziękiem włączyć numerację linii. Czy ktokolwiek wie o jakichkolwiek przykładach?WPF RichTextBox do tworzenia edytora o numerach linii

+0

Nie byłem wystarczająco inteligentny, aby wykonać tę pracę. Nie byłem w stanie dowiedzieć się, kiedy RichTextBox przewija się, dzięki czemu mogę spróbować przewinąć ListBox w tej samej ilości. A ponieważ linie są zbyt długie w RTB, automatycznie owija ekran, a w takim przypadku pomijam numery linii ListBox. –

Odpowiedz

3

Chciałbym utworzyć sterowanie złożone, z kontrolką panelu stosu i blokami tekstu po lewej stronie, które można wykorzystać do obsługi numeracji linii. Jeśli obawiasz się liczby linii i posiadania zbyt wielu elementów wizualnych, możesz użyć ListBox w trybie wirtualnym.

Będziesz musiał podłączyć się do różnych zdarzeń w RichTextBox, aby wiedzieć, kiedy zaktualizować ListBox, a także obliczyć wysokość każdej linii, ale to powinno być wykonalne z FlowDocument dołączonym do RichTextBox.

+0

Nie jestem pewien, czy podoba mi się ten pomysł - utrzymywanie linii bazowych tekstu na listach w linii z liniami bazowymi RichEdit może być problematyczne (zdecydowanie, jeśli jego formatator pozwala na różne czcionki) - ale ponieważ nie mam alternatywy, +1 –

+0

Nie byłem wystarczająco inteligentny, aby wykonać tę pracę. Nie byłem w stanie dowiedzieć się, kiedy RichTextBox przewija się, dzięki czemu mogę spróbować przewinąć ListBox w tej samej ilości. A ponieważ linie są zbyt długie w RTB, automatycznie owija ekran, a w takim przypadku pomijam numery linii ListBox. –

3

RichText obsługuje "chronione" - nieedytowalne - rozpiętości. Można zrzucić numery linii jako chronione rozpiętości tekstu jako część strumienia RTF (podczas formatowania).

W Win Forms można użyć RichTextBox.SelectionProtected Property. WPF musi mieć coś podobnego.

W ten sposób wszystkie linie bazowe będą poprawne i nie będziesz musiał wykonywać żadnego dodatkowego myślenia/programowania, aby edytor zachowywał się właściwie. Edytowalny tekst będzie edytowalny, a numery linii nie będą.

Jedyną wadą jest to, że musisz ponownie przesłać strumień RTF po każdej edycji. Ale wyobrażam sobie, że już to robiłeś, aby zapewnić formatowanie/diagnostykę błędów/cokolwiek.

2

Co powiesz na używanie formantu WPF AqiStar? AqiStar.TextBox

Nie pracuję dla nich ... Po prostu wiem, że Oren używa tego produktu w swoim NHiFinderze (NHProf) i wydaje się, że go kopie.

+0

Niestety, mój pracodawca nie pozwala nam dołączyć oprogramowania, które musimy licencjonować w naszym rozwiązaniu. –

7

Jest to dobry i jest open source. Myślę, że ma prawie wszystkie funkcje kontrolki Aqistar, takie jak podświetlanie składni i składanie. Łatwość konfiguracji i użytkowania. Dalsze szczegóły można znaleźć here. enter image description here

Powiązane problemy