Túto funkciu používam na aktualizáciu modulu RichTextBox v situáciách s krížovým vláknom
public void AddRtf(string text)
{
// cross thread allowed
if (rtb.InvokeRequired)
{
rtb.Invoke((MethodInvoker)delegate()
{
AddRtf(text);
});
}
else
{
rtb.Rtf = @"{rtf1ansi This is in b boldb0.}"; // this works
rtb.Rtf = @"{rtf1ansi This "+text+"is in b boldb0.}"; // this not
}
}
Ak to však nefunguje, pri odovzdávaní argumentu „text“ nevidím formát RTF.
Aký bude problém?
V skutočnosti potrebujem jednoduché riešenie na aktualizáciuRichTextBox s COLOR, BOLD, UNDERLINE a niektorými adresami URL v texte. Napísal som na to niektoré funkcie, ako napríklad rtb.AddLink () .AddBold () atď., Vrátane pekného rozšírenia o pridávanie adries URL, zdá sa však logickejšie odovzdať formát RTF a nechať kontrolu aktualizovať formátovanie. To ma však núti rozbiť text v každom bode, kde potrebujem niečo Tučným alebo čokoľvek.
Myslím si, že HTML bude pohodlnejšie, ale potrebujem jednoduchý syntaktický analyzátor, aspoň jednoduchší ako HTMLAgilitypack.
Jednoduché písanie do jedného riadku:
log.write("<font color="red">This is error</font> and this is the link... etc")
Každý má na to jednoduché riešenie?
odpovede:
2 pre odpoveď č. 1Musíte uniknúť v druhej časti reťazca:
@"{rtf1ansi This "+text+"is in \b bold\b0.}"
^^ ^^
alebo použite @
znovu
@"{rtf1ansi This "+text+@"is in b boldb0.}"
^