webForumDet fria alternativet

Problem med att visa formaterad text i Richtextbox

.NET

2 svar · 519 visningar · startad av saw

Medlem sedan mars 20011 880 inlägg
Frågan#1

Tokig titel, men jag skulle behöva lite hjälp.
I princip så fungerar min kod, men inte fullt ut.
Denna kod ligger i muse_up händelsen.

bool bfet = ((richTextBoxEx1.SelectionFont.Style == FontStyle.Bold) ? 
toolStripButtonFet.Checked = true : toolStripButtonFet.Checked = false);

bool bkursiv = ((richTextBoxEx1.SelectionFont.Style == FontStyle.Italic) ? 
toolStripButtonKursiv.Checked = true : toolStripButtonKursiv.Checked = false);

bool bunderline = ((richTextBoxEx1.SelectionFont.Style == 
FontStyle.Underline) ? toolStripButtonUnderstuket.Checked = true : 
toolStripButtonUnderstuket.Checked = false);

Enskillt så fungerar allt, men inte ihop dvs om jag har en text som enbart är fet, eller enbart är kusiv eller enbart är understuken då fungerar allt.
Men är den både fet och kursiv, då fungerar den inte, ingen av knapparna
trycks ner. Vad tror ni är felet?

Medlem sedan maj 20012 812 inlägg
#2

Men om din text är både Fet och kursiv så kommer inget av dina vilkorssatser att vara sanna och ingen knapp kommer att vara nertryckt.

Jag misstänker att din SelectonFont.Style kan ha flera värden isig och du måste kontrollera detta och inte bara försöka jämföra mitt ett värd.

bool bfet = (((richTextBoxEx1.SelectionFont.Style & FontStyle.Bold) == FontStyle.Bold) ? 
toolStripButtonFet.Checked = true : toolStripButtonFet.Checked = false);

bool bkursiv = (((richTextBoxEx1.SelectionFont.Style & FontStyle.Italic) == FontStyle.Italic) ? 
toolStripButtonKursiv.Checked = true : toolStripButtonKursiv.Checked = false);

bool bunderline = (((richTextBoxEx1.SelectionFont.Style & FontStyle.Underline) == 
FontStyle.Underline) ? toolStripButtonUnderstuket.Checked = true : 
toolStripButtonUnderstuket.Checked = false);

Med hjälp av & gör du en bitvis AND och kan kontrollera om din SelectionFont.Style innehåller just det du vill kontrollera efter. Men som sagt det förutsätter att SelectionFont.Style kan innehålla flera värden, men det bör den kunna...

Sen kan du skriva om din kod så den blir lite kortare...

bool bfet = toolStripButtonFet.Checked = ((richTextBoxEx1.SelectionFont.Style & FontStyle.Bold) == FontStyle.Bold)

Och då toolStripButtonFet.Checked alltid kommer ha samma värde som bfet så finns det ju knappast någon anledning till att ha bfet med och du kan förkorta din kod ännu mer..

toolStripButtonFet.Checked = ((richTextBoxEx1.SelectionFont.Style & FontStyle.Bold) == FontStyle.Bold)

- M

Medlem sedan mars 20011 880 inlägg
#3

Tack min vän, jag var inne lite åt ditt håll men kom aldrig i mål.
Det här blev dessutom en väldig snygg kod, om du lyssnar noga så hör du applåderna
ifrån Växjö.

264 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)