/ / cross thread rtf format - c #, richtextbox

krížový formát rtf formát - c #, richtextbox

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ď č. 1

Musí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.}"
^