Formatowanie w RichTextBox

0

Witam

Mam problem z formatowaniem (np. zmianą czcionki) wybranego wiersza. Mój kod przedstawią się następująco:

tring[] daneDoRichTextBoxa = new string[4];
            daneDoRichTextBoxa[0] = "\n";
            daneDoRichTextBoxa[1] = "111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111 5555555555555555555555 55 55555555555 555 5555\n";
            daneDoRichTextBoxa[2] = "222\n";
            daneDoRichTextBoxa[3] = "333";


            richTextBoxPrintCtrl2.Clear();
            richTextBoxPrintCtrl2.AppendText(daneDoRichTextBoxa[0] + daneDoRichTextBoxa[1] + daneDoRichTextBoxa[2] + daneDoRichTextBoxa[2]);
         
            int nrWiersza =2;
            string wiersz = richTextBoxPrintCtrl2.Lines[nrWiersza];

            richTextBoxPrintCtrl2.Select(richTextBoxPrintCtrl2.GetFirstCharIndexFromLine(nrWiersza), wiersz.Length);
            richTextBoxPrintCtrl2.SelectionFont = new Font("Times New Roman", 17, FontStyle.Bold); 

rogram zamiast formatować wiersz 2 czyli "222\n", formatuje 555 (w oknie richtextboxa faktycznie w 2 wierszu mamy 55555, gdyż cała zawartość daneDoRichTextBoxa[1] nie mieście się w 1 wierszu).
Interesuje mnie w jaki sposób mógłbym sformatować wiersz z "222\n"

0

widzę, że pytanie brzmi: jak wyliczyć ile wierszy zajmie string.
Utwórz RichTextBox tymczasowy dynamicznie o rozmiarach richTextBoxPrintCtrl2. Wyczyść go Clearem. Appenduj do niego żądany string i zbadaj ile zajmuje linii. I gotowe.
"Najprostsze rozwiązanie bywa najbardziej skuteczne"

0

MSM podpowiada to co ja już robiłem:

Graphics gg = richTextBoxPrintCtrl2.CreateGraphics();
int NumberOfLines;
NumberOfLines =(int)((gg.MeasureString(daneDoRichTextBoxa[1], richTextBoxPrintCtrl2.Font).ToSize().Width + daneDoRichTextBoxa[1].Length)/ richTextBoxPrintCtrl2.Width;

Niestety MeasureString mierzy długość samego napisu, a chyba nie mierzy odległości pomiędzy znakami. I dlatego metoda zawodzi. Dlatego wstawiłem daneDoRichTextBoxa[1].Length, które dodaje po jednym pikselu odległości na znak, ale to jest wyłącznie doświadczalnie zrobione, jak zwiększysz czcionke to nie wiadomo co się stanie, sam musisz rozwinąć to.

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