richTextBox formatieren

Slater

Erfahrenes Mitglied
Hy, Ich habe eine Suche erstellt, die den gefundenen Text farbig markiert. Jedoch habe ich weiter vorne im Code auch schon eine Farbänderung für die Überschrift vorgenommen, die es mir verwirft -> Es stellt mir nur die letzte "Select" Gruppe dar...
Wie kann ich das ändern?

Gibt es auch eine Möglichkeit eine art Button in die richtextBox zu machen? Wenn der Benutzer auf "MEHR" klickt, dass eine Funktion aufgerufen wird?

Danke
Slater
 
Hallo!

  1. Wirf doch mal einen Blick in diese Tutorials:
    Syntax Highlighting in Rich TextBox Control - Part1
    Syntax Highlighting in Rich TextBox Control - Part 2.
    Ich denke mal das Du was nicht richtig machst. Vielleicht hilft das ja.
  2. Was meinst Du mit
    eine Möglichkeit eine art Button in die richtextBox zu machen? Wenn der Benutzer auf "MEHR" klickt, dass eine Funktion aufgerufen wird?
    Meinst Du etwa ein KontextMenü? Ich weiss nicht so ganz was Du machen willst. Könntest ja mal etwas genauer werden.

MfG, cosmo
 
Zuletzt bearbeitet:
Also, habe zur genauen Erklärung noch ein Bild angehängt:

1 -> Hier sollte der Text eigentlich Fett sein (Wird aber nicht mehr angezeigt, nachdem der Suchtext rot eingefärbt wurde...)

2 -> Wenn man hier draufklickt sollte
Code:
private void Suchen()
{
//bal bla bla
}
aufgerufen werden. Weiss aber nicht wie das geht :(


Auszug aus dem Hauptquelltext
Code:
int Anzahl = dt.Rows.Count;
richTextBox1.Text = "Gefundene Themen: " + Anzahl + "\n\n";
int StrLänge = Convert.ToString(Anzahl).Length;
richTextBox1.Select(20, StrLänge);
richTextBox1.SelectionColor = Color.Red;
int Start;
int Ende;
for (int i=0; i<Anzahl; i++)
{
	string SuchÜberschrift = Convert.ToString(dt.Rows[i]["Name1"]);
	string Text = Convert.ToString(dt.Rows[i]["Text1"]);
	int ErstesVorkommen = Text.IndexOf(textBox2.Text);
	int LängeSuchzeichen = textBox2.Text.Length;
	if (ErstesVorkommen-50 < 0)
	{
		Start = 0;
	}
	else
	{
		Start = ErstesVorkommen-50;
	}
	if (ErstesVorkommen+50+LängeSuchzeichen > Text.Length)
	{
		Ende = Text.Length;
	}
	else
	{
		Ende = ErstesVorkommen+50+LängeSuchzeichen;
	}
	int Länge = Ende-Start;
	string SuchText = Text.Substring(Start, Länge);
	int Min = richTextBox1.Text.Length;
	richTextBox1.Text += "Thema: " + SuchÜberschrift;
	int Max = richTextBox1.Text.Length;
	richTextBox1.Text += "\n";
	int Differenz = Max-Min;
	string Select = richTextBox1.Text.Substring(Min, Differenz);	
	richTextBox1.Select(Min, Differenz);
	richTextBox1.SelectionFont = new Font("Microsoft Sans Serif", 8, FontStyle.Bold);
	richTextBox1.Text += SuchText + "\n->Link\n\n";
}
conn.Close();
int AnzahlZeichen = richTextBox1.Text.Length;
int LetztesVorkommen = 0;
for (int i=0; i<AnzahlZeichen; i++)
{
	try
	{
		int NeuesVorkommen = richTextBox1.Text.IndexOf(textBox2.Text, LetztesVorkommen);
		richTextBox1.Select(NeuesVorkommen, textBox2.Text.Length);
		richTextBox1.SelectionColor = Color.Red;
		richTextBox1.SelectionFont = new Font("Microsoft Sans Serif", 8, FontStyle.Bold);
		LetztesVorkommen = textBox2.Text.Length+NeuesVorkommen;
	}
	catch
	{
	}
}
 

Anhänge

  • Hilfe.jpg
    Hilfe.jpg
    74,7 KB · Aufrufe: 1.018
  1. Ich hab jetzt leider keine Ahnung warum das nicht klappt. Mir fehlt im Moment die Zeit, deinen Quellcode zu checken -> viel Arbeit. Könnte sich ja mal jemand anderes melden.
  2. Sorry, ich weiss leider nicht wie Du einen Link in eine RichTextBox bekommst.
    Ich dächt die unterstützt nur iNET-Links. Bin mir nicht sicher.
    Du könntest alternativ ein KontextMenu erstellen. Ich mein das Du erst ein Wort markiest (Doppelklick) und die Option "Suchen" im KontextMenu nach dem markierten Wort sucht.

MfG, cosmo
 

Neue Beiträge

Zurück