x-kom hosting

[C#] Formatowanie tekstu w richBoxie

wuldemar95
utworzono
utworzono

Witam! Zależy mi na szybkim rozwiązaniu problemu.
Mianowicie chodzi o to, żebym mógł z buttona (np. tak jak w Wordzie) np. pogrubić dany tekst i jednocześnie nadać mu kursywę i podkreślenie.
Zrobiłem te funkcje, jednak gdy kliknę w pogrub a tekst wcześniej miał formatowanie, formatowanie to znika. Przyczyną tego jest ten fragment:
 

 if (rchText.SelectionFont.Bold == true)
                {
                    newFontStyle = FontStyle.Regular;
                }
                else
                {
                    newFontStyle = FontStyle.Bold;
                }

Jednak nie potrafię zrobić w inny sposób tego, aby drugie naciśnięcie przycisku "Pogrub" usuwało Pogrubienie a Kursywa zostawała.

Wystarczy, że ktoś naprowadzi mnie na dobry tor.

Proszę o szybką pomoc.
Z góry dziękuję i pozdrawiam!

rafalluz
komentarz
komentarz (edytowane)

newFontStyle |= FontStyle.Bold - doda bolda zachowując resztę.

newFontStyle = newFontStyle & ~FontStyle.Bold - usunie bolda, zachowując reszte.

 

XOR (^=) też powinien działać.

Edytowane przez rafalluz
wuldemar95
komentarz
komentarz

Dzięki wielkie już sprawdzam. 
A wiesz może, jak wyrównać tekst do lewej, prawej, wyśrodkować i wyjustować w richTextBoxie?

wuldemar95
komentarz
komentarz (edytowane)

Dzięki wielkie! Wszystko działa, jednak nie potrafię zrobić justowania. Znalazłem tylko jedną stronę w internecie na temat tego jak to zrobić ale dalej nie potrafię. Ktoś mógłby coś podesłać?

Jeszcze jedna prośba. 

Jeśli chodzi o jednoczesne nadanie pogrubienia i kursywy. Sposób podany wyżej nie działa.. Muszę użyć jakiejś dodatkowej przestrzeni nazw? 

Edytowane przez wuldemar95
rafalluz
komentarz
komentarz (edytowane)

Działa, jeśli masz dostęp do właściwości FontStyle (RichTextBox takową ma) i zakładam, że newFontStyle jest dodatkową referencją do tego FontStyle.

 

Jak nie, to musisz tworzyć nowe obiekty Font i im definiować styl w konstruktorze.

 

(FontStyle.Italic | FontStyle.Bold) to jednocześnie bold i italic.

Edytowane przez rafalluz
wuldemar95
komentarz
komentarz (edytowane)

Formatowanie mam już opanowane, jednak dalej nie rozwiązałem problemu justowania, a ponadto pojawił się kolejny - TABELE.
Wiem jak utworzyć tabelę o określonej liczbie wierszy i kolumn. Może dałbym radę utworzyć tabele o liczbie wierszy wprowadzanych do programu, ale nie potrafię utworzyć tabeli, która może mieć liczbę wierszy i kolumn określoną przez użytkownika.

Poniżej przedstawiam kod, który buduje tabelę 5 wierszy x 2 kolumny (2 komórki w wierszu)
 

StringBuilder tabela = new StringBuilder();            
             tabela.Append(@"{\rtf1 ");

             for (int i = 0; i < 5; i++)
             {

                 tabela.Append(@"\trowd");
                 tabela.Append(@"\cellx500");
                 tabela.Append(@"\cellx1000");
                 tabela.Append(@"\intbl \cell \row");

             }

             tabela.Append(@"\pard");
             tabela.Append(@"}");
             this.rchText.Rtf = tabela.ToString();

Próbowałem zrobić o większej liczbie komórek w wierszu, ale musiałem w pętli dopisać...

tabela.Append(@"\cellx500");

...tyle razy ile chciałem mieć kolumn.

Próbowałem wrzucić powyższy fragment kodu w pętlę, ale ustawiając w pierwszej pętli 3 a w drugiej 2, wychodziło mi co prawda 6 komórek, ale jedna pod drugą.

EDIT: Myślę, że wiem w czym tkwi problem. wartości w nawiasach, konkretnie "x500" i "x1000" nie ustalają szerokości komórki, tylko odległości końca tej komórki od brzegu strony. Nasuwa się kolejne pytanie, jak zrobić, aby pętla automatycznie dodawała wartości do poprzednich? Innymi słowy, jak dodać np po każdym przejściu pętli 100 jednostek do odległości końca komórki od brzegu strony. (do (cellx)500 dodać 100) 

Edytowane przez wuldemar95

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.