Witam!
Próbuję napisać w C# (Windows Forms) prosty edytor XML-a. Jedynymi kontrolkami są richTextBox i Timer. Program ma za zadanie pogrubiać każdy znacznik (od “<” do “>”). W zdarzeniu Timer.Tick po sprawdzeniu, czy ilość “<” i “>” jest taka sama, program zamienia każdy “<” w zawartości (.Text) richTextBox-a na “{\b<”, każdy “>” na “>}” oraz dodaje “{\rtf” na początku i “}” na końcu. Tak zmodyfikowany tekst jest przypisywany właściwości .rtf richTextBox-a. Początkowo działa dobrze. Gdy napiszę np. znacznik jest pogrubiany, ale gdy dopiszę jeszcze coś, dopisany tekst również jest pogrubiany. Sprawdziłem generowanego RTF-a. Wygląda tak:
{\rtf {\b }yyy}
Kod zdarzenia:
string t = mainTB.Text; //mainTB to ten RichTextBox//
int c1 = t.Count(f => f == '<');
int c2 = t.Count(f => f == '>');
if (c1 == c2)
{
int lastPosition = mainTB.SelectionStart;
t = t.Replace("<", "{\\b <");
t = t.Replace(">", ">}");
t = "{\\rtf " + t + "}";
mainTB.Rtf = t;
mainTB.SelectionStart = lastPosition;
Console.WriteLine(t); //Stąd skopiowałem RTF-a//
}
Co robię źle? Program powinien pogrubiać tylko od “<” do “>”.
Nie jestem profesjonalnym programistą, pierwszy raz próbuję użyć RTF-a w programie. Dlatego proszę o wyrozumiałość w sprawie tego prostego pytania pytania.
(Visual C# Express 2010, .NET Framework 4, Windows 7)