C# (Windows Form) - "gråa ut" gammal text - Rich Text Box

Permalänk

C# (Windows Form) - "gråa ut" gammal text - Rich Text Box

Som rubriken lyder så är jag ute efter att göra gammal text i min text box utgråad, och sen göra så att ny text blir svart så att man lätt kan se den "nya" texten.

Är nybörjar på programmering och sitter för att lära mig lite grunder osv

Sökt runt lite o testat lite men lyckas bara ändra all text färg.

Har testat med richTextBox.Select(0, richTextBox.MaxLength) - för att markera allt
richTextBox.SelectionColor = Color.Gray - gör om allt till grått
richTextBox.DeselectAll - avmarkera allt
richTextBox.Text += "Hej" - ny text i svart

Men all text blir grå även den nya. Har inte riktigt hittat hur jag ska lösa det men borde väl gå att lösa?

Visa signatur

PC: AMD FX-8320 @ 4.6GHz, Asus Sabertooth 990FX, 2x 8GB Corsair Dominator Platinum
Sapphire HD7970 Vapor-X GHz Edition, Samsung SSD 840 PROSeries 256GB, 5TB Storage
Ex-PC: AMD Phenom II X3 720 @ 2.8GHz, Gigabyte 790X, 2x 2GB Corsiar XMS2
Sapphire HD4870 512MB, OCZ Vertex 3 128GB, 320GB Storage
TV: LG 42", Raspberry Pi, Xbox360 Slim 250GB, Nintendo Wii /w softmod

Permalänk

@Christoffer1989: Från https://msdn.microsoft.com/en-us/library/system.windows.forms...

Citat:

If no text is currently selected, the text color specified in this property is applied to the current insertion point and to all text that is typed into the control after the insertion point.

"deselecta" allt och sätt selectioncolor till svart igen efter borde funka alternativt strunta i att deselecta

Permalänk
Skrivet av EpicBlobfish:

@Christoffer1989: Från https://msdn.microsoft.com/en-us/library/system.windows.forms... "deselecta" allt och sätt selectioncolor till svart igen efter borde funka alternativt strunta i att deselecta

testade det, men verkade inte fungera.

Har dock löst det på ett väldigt "speciellt sätt".

Hitta en lösning vi google som jag testade som inte fungerade rakt av.
Utan fick lägga till ForeColor = Color.Blue och ForeColor = Color.Gray. Om jag bara satte färgen till grå direkt så hände inget, men satt jag färgen till någon anna först sen direkt till grå så fungerade det.

I min message funktion:

int length = rtbMessages.TextLength;
rtbMessages.AppendText("min string" + Environment.NewLine);
rtbMessages.SelectionStart = length;
rtbMessages.SelectionLength = "min string".Message.Length;
rtbMessages.SelectionColor = Color.Black;

sen körde jag med:
rtbMessages.ForeColor = Color.Blue;
rtbMessages.ForeColor = Color.Gray;

innan jag kallar på min message funktion.

Finns säkert en "bättre" lösning, men efter mycket om och men så funkade detta för mig iallafall

Visa signatur

PC: AMD FX-8320 @ 4.6GHz, Asus Sabertooth 990FX, 2x 8GB Corsair Dominator Platinum
Sapphire HD7970 Vapor-X GHz Edition, Samsung SSD 840 PROSeries 256GB, 5TB Storage
Ex-PC: AMD Phenom II X3 720 @ 2.8GHz, Gigabyte 790X, 2x 2GB Corsiar XMS2
Sapphire HD4870 512MB, OCZ Vertex 3 128GB, 320GB Storage
TV: LG 42", Raspberry Pi, Xbox360 Slim 250GB, Nintendo Wii /w softmod

Permalänk
Medlem

vad jag kan se av din kod så sätter du SelectionStart till slutet av textboxen.

private void AppendText(string newText) { rtb.Select(0, rtb.Text.Length); rtb.SelectionColor = Color.Gray; rtb.SelectionStart = rtb.Text.Length; rtb.SelectionColor = Color.Black rtb.AppendText(newText); }

Borde fungera, får du problem etc bara poke:a

Visa signatur

C#/MonoGame Fanatiker.
Pixel Artist & Game Developer