Hallo zusammen,
ich habe ein kleines Problem. Ich möchte in einer Textbox (in meinem Fall in einer WPF-Anwendung, aber das dürfte egal sein) Text markieren wenn ich einen Doppelklick darauf mache. Dies funktioniert ja eigentlich schon OutOfTheBox, aber da die Bedingungen, welcher Text, wie weit markiert werden soll, anders sind als der Standard, suche ich mir den Start- und Endpunkt der Markierung mit Hilfe von Regulären Ausdrücken.
Das funktioniert soweit auch ganz gut, solange der zu markierende Text nicht bis an das Zeilenende reicht.
Beispiel:
In der Textbox steht "Dies ist ein Text" (ohne die Anführungszeichen) und ich mache einen doppelklick auf "Dies", dann wird das Wort korrekt markiert.
Mache ich jedoch einen Doppelklick auf "Text", beispielsweise genau zwischen dem "e" und dem "x" dann wird mir nur "Te" markiert und nicht "Text".
Ich weiß nicht wo hier der Fehler liegt.
Sieht von Euch vielleicht jemand, wo ich was falsch mache?
Dies ist mein Code:
[highlight=c#]
private void txtValue_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
int start = 0;
int ende = 0;
start = Regex.Match(txtValue.Text.Substring(0, txtValue.SelectionStart), @"[^-_$a-zA-Z0-9äöüÄÖÜ\.]", RegexOptions.RightToLeft).Index;
ende = Regex.Match(txtValue.Text.Substring(txtValue.Selec tionStart), @"[^-_$a-zA-Z0-9äöüÄÖÜ\.]").Index;
ende = txtValue.Text.Substring(0, txtValue.SelectionStart).Length + ende;
if (start == -1) start = 0;
if (ende == -1) ende = txtValue.Text.Length;
txtValue.Select(start == 0 ? 0 : start + 1, start == 0 ? ende - start : ende - start - 1);
e.Handled = true;
}
[/highlight]
ich habe ein kleines Problem. Ich möchte in einer Textbox (in meinem Fall in einer WPF-Anwendung, aber das dürfte egal sein) Text markieren wenn ich einen Doppelklick darauf mache. Dies funktioniert ja eigentlich schon OutOfTheBox, aber da die Bedingungen, welcher Text, wie weit markiert werden soll, anders sind als der Standard, suche ich mir den Start- und Endpunkt der Markierung mit Hilfe von Regulären Ausdrücken.
Das funktioniert soweit auch ganz gut, solange der zu markierende Text nicht bis an das Zeilenende reicht.
Beispiel:
In der Textbox steht "Dies ist ein Text" (ohne die Anführungszeichen) und ich mache einen doppelklick auf "Dies", dann wird das Wort korrekt markiert.
Mache ich jedoch einen Doppelklick auf "Text", beispielsweise genau zwischen dem "e" und dem "x" dann wird mir nur "Te" markiert und nicht "Text".
Ich weiß nicht wo hier der Fehler liegt.
Sieht von Euch vielleicht jemand, wo ich was falsch mache?
Dies ist mein Code:
[highlight=c#]
private void txtValue_PreviewMouseDoubleClick(object sender, MouseButtonEventArgs e)
{
int start = 0;
int ende = 0;
start = Regex.Match(txtValue.Text.Substring(0, txtValue.SelectionStart), @"[^-_$a-zA-Z0-9äöüÄÖÜ\.]", RegexOptions.RightToLeft).Index;
ende = Regex.Match(txtValue.Text.Substring(txtValue.Selec tionStart), @"[^-_$a-zA-Z0-9äöüÄÖÜ\.]").Index;
ende = txtValue.Text.Substring(0, txtValue.SelectionStart).Length + ende;
if (start == -1) start = 0;
if (ende == -1) ende = txtValue.Text.Length;
txtValue.Select(start == 0 ? 0 : start + 1, start == 0 ? ende - start : ende - start - 1);
e.Handled = true;
}
[/highlight]
Comment