RichTextBox i jego linie.

0

Witam wszystkich. Mam do Was pytanie.
Wczytuję plik tekstowy do richtextbox. Plik ten nie posiada żadnych enterów. Problem w tym, że wszystko zapisuje jako jedną linię, mimo tego, że praktycznie widać, że jest ich kilka (po prostu jak zmniejsze richtextbox będzie tych linii więcej).
Otóż ja chcę, hmm..., odczytać jedną linię richtextbox, ale linię tą, co widać, a nie tą co wczytalem.

Próbowałem:
MessageBox.Show(richTextBox1.Lines[0]);


Ale wtedy odczytuje mi cały ten richtextbox, bo w sumie jest to cała jedna linia, tylko podzielona. Ja chcę mieć tylko te podzielone kawałki, które widać.

Jakby ktoś nie zrozumiał to mogę zrobić screena :).

Z góry dziękuję.
Ryfer
0

Pokaż jak wczytujesz plik tekstowy.

0
StreamReader reader = new StreamReader(@"C:\Tekst.txt", Encoding.GetEncoding("Windows-1250")) ; richTextBox1.Text = reader.ReadToEnd(); ```

Tak czy siak to nie ma różnicy, bo tak jak wspominałem, plik tekstowy ma jedną długą linię.

0

Dobrze, więc jak podzielić string na linie tak, aby wszystkie były równe?
Substring w tym przypadku może nie zadziałać...

0
int lastCharInLinePosition = richTextBox1.GetCharIndexFromPosition(new Point(richTextBox1.Width - 1, 1));
string line = richTextBox1.Text.Substring(0, lastCharInLinePosition);

MessageBox.Show(line);
0

somekind,
to co dałeś, coś robi, ale nie dzieli równo tekst, ponieważ każda litera ma inną wielkość :). Na przykład D jest większe niż l, więc to nie działa.

0

To sobie zmień czcionkę. :P

0

Na taką, żeby B było takiej samej wielkości jak i? :)

0

No na czcionkę nieproporcjonalną np. Courier. Albo zrób justowanie tekstu. :D

0

Bez znajomości charakteru tekstu (proza? jakieś literki-cyferki?) nie można wymyśleć sensownego podziału na linie.

0

Raczej tematy są różne, więc chyba będzie problem.
Zmieniłem czcionkę na courier, jednak dalej występuje podobny problem.

0
Ryfer napisał(a):

somekind,
to co dałeś, coś robi, ale nie dzieli równo tekst, ponieważ każda litera ma inną wielkość :). Na przykład D jest większe niż l, więc to nie działa.

Ja wkleiłem przykład kodu, który mierzy tekst w pierwszej linii. Jeśli linii jest więcej, to oczywiście trzeba w pętli mierzyć każdą z nich.

1 użytkowników online, w tym zalogowanych: 0, gości: 1