Zmiana koloru pojedynczego słowa w textBox w C#

Nie potrafię poradzić sobie z pewnym problemem. Otóż musze napisać program NIE konsolowy w C# sprawdzający poprawność kodu języka HTML. Coś takiego jak WALIDATOR. Zgromadziłem wyrazy HTMLowe i jak wpisuje kod do jednego textBoxa to w drugim textBoxie ma pokazać się ten sam kod tylko z zaznaczonymi na ZIELONO wyrazami poprawnie napisanymi. I tu jest problem. JAK ZROBIĆ > aby te pojedyncze wyrazy były kolorowe. Jak dam np. slowo1.ForeColor = Color.Green; to mi nic nie daje. Podobno jest z tym duzo roboty a nie wiem jak to rozgryźć.

if (textBox1.Text == slowo1.ToString() &&

textBox1.Text == slowo2.ToString() &&

textBox1.Text == slowo3.ToString())

{

textBox2.Text = slowo1.ToString();

textBox2.Text = slowo2.ToString(); // te słowa mają być w kolorze zielonym reszta na czerwono

textBox2.Text = slowo3.ToString();

}

CZY Ktoś mógłby mi pomóc w tym zadaniu naprowadzić podać kod jakoś POMÓC.

Szukałem na necie ale nic nie jest napisane o konkretnych słowach.

Z góry dzięki

AFAIK TextBox nie umożliwia formatowania tekstu. Musisz użyć RichTextBox i pobawić się w dodawanie słów sformatowanych w RTF.

Wystarczą chyba RichTextBox.Select(int start, int lenght) oraz RichTextBox.SelectionColor.

oki mam richTextBox’ y i chce zastosować te komendy ale mi podkreśla że nie mam tam czegoś zainicjowanego. Czy moglibyscie mi podać jak to wklepać mój kod niewiele sie zmienił:

private void button1_Click(object sender, EventArgs e)

{

richTextBox2.Text = richTextBox1.Text;

if (richTextBox1.Text == slowo1.ToString() &&

richTextBox1.Text == slowo2.ToString() &&

richTextBox1.Text == slowo3.ToString() &&

{

//RichTextBox.Select(int start, int lenght) oraz RichTextBox.SelectionColor.

richTextBox2.Text = slowo1.ToString();

richTextBox2.Text = slowo2.ToString();

richTextBox2.Text = slowo3.ToString();

}

co mam dalej wklepać jak połaczyć aby sie jadło czy mógłby mi ten kod ktoś przekształcić żeby było tak jak pisałem w 1 poście te slowa1,2,3 z richTextBox’a 1 mają być w richTextBox’ie 2 zielone: pisze sobie tekst i on ma być wstawiony to richTextBox’a 2 a te slowa1,2,3… mają być na zielono np.

slowo1: oooooo

slowo2: yyyyy

xxxxx yyyyy lllll oooooo sssss oooooo

xxxxx yyyyy lllll oooooo sssss oooooo

czy ktoś mi mógłby przekształcić ten kod sam nie potrafię jestem totalny laik z C# niestety a bez tego dalej nie rusze

RichTextBox to kontrolka(nazwa klasy) a funkcja Select nie jest statyczną, musisz wywołać richTextBox(1/2).Select(0, 5)[to przykład] i ustawić(po wywołaniu) richTextBox(1/2).SelectionColor = Color.Red(też przykład).

Oto kod który działa:

RichTextBox richTextBox1 = new RichTextBox();

//Ustawianie pozycji, etc.

richTextBox1.Text = "Testowy tekst.";

richTextBox1.Select(0, 5);

richTextBox1.SelectionColor = System.Drawing.Color.Red;

richTextBox1.DeselectAll();

oki oki Twój kod działa ale nie o to mi chodzi. Albo jestem totalnie ciemny. Pisze sobie coś w richTextbox1 i ja wpisze to Twoje “Testowy tekst.” to jego wsadza mi na czerwono ale dalej wszystko jest na czerwono. A mi chodzi aby w tym richTekstbox1 wszystko było na czarno a dalej jak klikne na button1 to w richTextbox2 ma mi wyskoczyć wszytko to co napisałem. Te słowa które wcześniej zdeklarowałem a były w napisanym przeze mnie richTextbox1 mają być w richTextbox2 innego koloru (zielone). Nie kumam tego twojego ustawiania Select(0, 5). Co to za pozycje? Fiołek wiem że to potrafisz i chwała Tobie za to ale ja jestem total laik. Jakbyś mógł mi przejrzeć ten kod i coś z niego rozklimić. Byłbym wdzieczny.

OTO KOD:


using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace sprawdz_html

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

String slowo1 = “lol”;

String slowo2 = “rotfl”;

String slowo3 = “elo”;

private void button1_Click(object sender, EventArgs e)

{

richTextBox2.Text = richTextBox1.Text;

if (richTextBox1.Text == slowo1.ToString() &&

richTextBox1.Text == slowo2.ToString() &&

richTextBox1.Text == slowo3.ToString())

{

richTextBox2.Text = slowo1.ToString();

richTextBox2.Text = slowo2.ToString();

richTextBox2.Text = slowo3.ToString();

}

}

private void label1_Click(object sender, EventArgs e)

{

}

private void label2_Click(object sender, EventArgs e)

{

}

private void domainUpDown1_SelectedItemChanged(object sender, EventArgs e)

{

}

private void button2_Click(object sender, EventArgs e)

{

richTextBox1.Clear();

richTextBox2.Clear();

}

private void richTextBox1_TextChanged(object sender, EventArgs e)

{

}

private void richTextBox2_TextChanged(object sender, EventArgs e)

{

}

}

}


może w czymś innym jest problem ???

Select jako pierwszy parametr przyjmuje pozycję startową do zaznaczenia(od którego znaku zaczynamy, liczone od zera), a drugi - ile znaków zaznaczyć. Jeśli chcesz zaznaczyć jedno słowo, pobierasz pozycje spacji zaraz po słowie i zaznaczasz tekst wybrany przez Select(posStartowa, posKońcowa).