RichTextBox-formátování textu   zodpovězená otázka

VB.NET, WinForms

Zdravím, rozhodl jsem se použít komponentu RichTextBox pro jednoduchou prezentaci některých výsledků mimo jiné proto, že zde mohu některé důležité věci zvýraznit apod.

Text se do komponenty doplňuje programově a zde jsem narazil na problém JAK změnit font, barvu pozadí apod. Umím to udělat u označeného textu, to není problém (SelectionBackColor, SelectionFont atd.) Musím si tedy zjišťovat pozice jednotlivých slov kde chci změnit formátování, tyto slova označit, změnit např. font a zase označení zrušit, nebo to jde něják jinak elegantněji? Mám obavu že při postupném označování jednotlivých slov bude RichTextBox na uživatele celkem nepříjemně blikat (hlavně v případě že text bude delší).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Takže zatím to řeším takto:

            Me.RichTextBox1.AppendText(vbNewLine & vbNewLine & "  OBDOBÍ: " & obdobiOd & " - " & obdobiDo & vbNewLine & vbNewLine) 'vypíšu
            Me.RichTextBox1.Find("  OBDOBÍ: " & obdobiOd & " - " & obdobiDo, RichTextBoxFinds.Reverse) 'označím
            Me.RichTextBox1.SelectionFont = New Font("Microsoft Sans Serif", 8, FontStyle.Bold) 'změním font

ale něják se mi tam nelíbí, že 2x za sebou slepuju stirngy. Mně by v podstatě stačílo, aby se mi vždycky označil poslední řádek.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Je to sice možné, ale dostaneš se k tomu, že u složitějších textů se pak "ukóduješ". Zrovna teď řeším podobnou záležitost, zatím jen úvahově. Při pokusech mi vyšli 2 možná řešení :

1.) Napsat a vymyslet vlastní tagovaný script, který pak podstrčíš proceduře, která ti vyrobí formát pro RTBox.

2.) Složitější ale obecnější ekvivalent je výroba RTF formátu (např. http://suplik.petnik.cz/priklady/vytvore... ).

Verze 1 ti umožní pak docela pohodlně vkládat do RTBoxu i linky, další komponenty a podobné věci.

PS: nezkusil jsi se zamyslet nad variantou, že vyrobíš kódem HTML soubor a ten pak podstčíš komponentě webBrowser ? Pokud jen prezentuješ data, mělo by to být dostačující.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Dělal jsem podobnou věc.Tehdy mi Tomáš poradil ať dám u komponenty Enabled = false a následně True . To odstranilo blikání , ovšem se objevil problém s výkonem aplikace (nechutně pomalé).Takže asi bych možná opět zkusil řešit situaci přes REGEX.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky za tip. Já jsem zjistil že pokud použiju svůj kód (viz. výše) tak sice dojde k označení textu, ale "neviditelně" tzn. text je označen, ale nevykresluje se focus, což je přesně to co potřeuju. Teď si hraju s tiskem, aby se mi formualář korektně vytisknul, s tím je taky docela legrace...:)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback