Witam
Prosiłbym o nakierowanie jak zrobić aby w kontrolce **RichTexBox** w programie jak na obrazku, __we wszytkich rozkazach typu **MOVA** pierwszy argument był zaznaczony__/wyróżniony innym kolorem tła/wyróżniony innym kolorem czcionki itp. Chodzi o to aby wyróżniały się, w planach miałem aby było to żółte tło, czcionka bez zmian, ale to nie jest sztywny wymóg, chodzi o to aby wszystkie argumenty do których ma być dodany offset były wyróżnione.
Zaznaczenie takie jak opisałem powyżej ma się włączać w przypadku gdy w richtextbox jest cos wyswietlane, zostanie wybrana oś X do wprowadzenia offsetu oraz w kontrolce numericUpDown będzie wartość różna od zera. Jeżeli oś Y to drugi parametr rozkazu MOVA jeżeli os Z to trzeci.
Wszytkie rozkazy wyświetlone w RichTexBox to obiekty, dziedziczące po ogólnej abstakcyjnej klasie Rozkaz, różnią się tylko typem rozkazu(pierwszego slowa w linii), ilością parametrów i typem parametrów (int lub double). Wszystkie rozkazy przechowuje w List<Rozkaz> jako pole obiektu ProgramMaszyny.
Rozkazy/linie w richtextbox są wyswietlane po wywolaniu ToString() z kazdego obiektu Rozkaz.
Bezproblemowo moge pobrać pozycję startową dla każdej składowej rozkazu i długość tego parametru w linii (w jednym rozkazie) bezposrednio z obiektu tego rozkazu (tych pozycji uzywam skladając rozkaz do kupy w ToString()). Jeżeli chodzi o pozycje tych paramterów względem początku richtextbox to nie od razu ale pewnie moge to policzyc.
Zaczynałem od tego, tu chyba liczy od poczatku textu w kontrolce:
richTextBoxPodgladProgramu.SelectionBackColor = Color.Red;
richTextBoxPodgladProgramu.Select(20, 5);
richTextBoxPodgladProgramu.Select(40, 5);
ale i tak w takim przypadku zaznaczenie pozostaje tylko z ostateniego wywolania Select. Troche szukałem, kombinowałem z właściwością Lines w RichTextBox:
w obiekcie ProgramMaszyny, jeżeli przeszukam List<Rozkaz> linie, pod katem:
if(linie[i] is RozkazMOVA)
nrLiniiRozkazuMOVA.Add(i)
to namierzam linie w których są rozkazy MOVA, ale przyznam, że dalej to się zatkałem. Prosiłbym o nakierowanie, jak rozwiązać ten problem, hasla klucze co gdzie doczytac itp. bede wdzieczny za wszelkie podpowiedzi.
Poniżej poglądowy screen programu.