Text zur Laufzeit durchsuchen


Saheeda

Aktives Mitglied
Hallo,

ich möchte mir soetwas in der Art basteln:
RegExr: Learn, Build, & Test RegEx

Also eine kleines Programm, mit dem ich "live" (also ohne weiteren Buttonklick) einen Text anhand eines eingegebenen RegEx durchsuchen kann.

Problem 1:
Implementierung der Live-Suche

Problem 2:
Das Highlighten.


Meine Idee:
Ich habe einen Timer eingebaut, der die Funktion CheckForRegex ausführt.
Leider scheint er die RegEx nicht zu erkennen, jedenfalls passiert nichts, wenn ich das Programm ausführe.

Desweiteren weiß ich nicht, wie ich das Highlighten implementieren kann. Ich arbeite noch nicht so lange mit WPF. Im TextBox-Menü finde ich zwar die Eigenschaft TextDecoration, aber die gilt ja anscheinend für die komplette Textbox und lässt sich nicht nur auf einzelne Zeichen anwenden.

Code:
public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            tbDisplay.Text = tbText.Text;
            System.Windows.Threading.DispatcherTimer timer = new System.Windows.Threading.DispatcherTimer();

            timer.Interval = TimeSpan.FromSeconds(0.5);
            timer.Tick += CheckForRegex;
            timer.Start();
        }


        private void CheckForRegex(object sender, EventArgs e)
        {
            string textIn = tbText.Text;

            char[] regex = tbRegEx.Text.ToCharArray();

            string[] splitted = textIn.Split(regex);

            for (int i = 0; i < splitted.Length; i++)
            {
                if (splitted[i].Equals(textIn[i]))
                {
                    tbDisplay.Text += splitted[i];

                }
            }
        }
    }


Achja:
Ich hatte bisher im Debugger immer ein Fenster, in dem ich schrittweise verfolgen konnte, was mit den Variablen/Objekten passiert. Das habe ich versehentlich weggeklickt und weiß jetzt nicht mehr, wo ichs wiederhole :-/
Edit: Ich arbeite mit Visual C# 2008.
 
Zuletzt bearbeitet:

Hinweis: Wenn du jetzt Java lernen möchtest, dann schau dir diese kurze Präsentation hier an (hier klicken!)
Sichere dir hier den Zugriff auf umfangreiches Java-Know How und starte richtig durch!

Hinweis: Wenn du jetzt Java lernen möchtest, dann schau dir diese kurze Präsentation hier an (hier klicken!)
Sichere dir hier den Zugriff auf umfangreiches Java-Know How und starte richtig durch!

HarleyDavidson

Mitglied
Also wenn es hier um Java ginge, könnte ich dir ohne Probleme schnell helfen.

Aber mit C# bist du hier leider nicht im richtigen Forum gelandet ...
 

Joose

Super-Moderator
Mitarbeiter
Problem 1:
Implementierung der Live-Suche
Dein Idee mit dem Timer ist zu kompliziert und verzögert das Ganze immer um eine gewisse Zeit.
Warum verwendest du nicht das TextChanged Event der TextBox?
Dann kannst du auf den geänderten Text direkt dein Regex anwenden.

Problem 2:
Das Highlighten.
Dazu gibt es im Internet genügend Materia: C# WPF Text Highlighting

Achja:
Ich hatte bisher im Debugger immer ein Fenster, in dem ich schrittweise verfolgen konnte, was mit den Variablen/Objekten passiert. Das habe ich versehentlich weggeklickt und weiß jetzt nicht mehr, wo ichs wiederhole :-/
Edit: Ich arbeite mit Visual C# 2008.
Wenn du im Debug Modus bist gibt es im Menü einen Punkt "Debuggen"->"Fenster" und dort gibt es die unterschiedlichsten Fenster für den Debug Modus ich glaube "Überwachen" ist dein gesuchtes.
 

Passende Stellenanzeigen aus deiner Region:


Neue Themen

Oben