Ich verwende AvalonEdit:TextEditor
. Kann ich den Schnellsuchdialog (z. B. bei Strg-F) für dieses Steuerelement aktivieren? Oder hat jemand Code für Suchbegriffe in AvalonEdit:TextEditor
Text?Hat AvalonEdit: TextEditor eine schnelle Suchfunktion?
Antwort
Es gibt nicht viel Dokumentation darüber, aber AvalonEdit hat eine in SearchPanel Klasse gebaut, die genau klingt wie das, was Sie wollen. Es gibt sogar eine SearchInputHandler Klasse, die es trivial macht es zu einem Editor angeschlossen zu bekommen, auf Tastatur reagiert Verknüpfungen usw. Hier ist ein Beispielcode, der die Standard-Suchlogik zu einem Editor angehängt:
myEditor.TextArea.DefaultInputHandler.NestedInputHandlers.Add(new SearchInputHandler(myEditor.TextArea));
Hier ein Screenshot von dem, wie es aussehen wird (das ist von ILSpy, die AvalonEdit verwendet). Sie sehen das Suchsteuerelement oben rechts, die Suchoptionen, die es unterstützt, und die automatische Hervorhebung der übereinstimmenden Ergebnisse.
Es gibt keine Unterstützung für ersetzen ... aber wenn Sie nur die Suche benötigen, kann dies eine gute Lösung sein.
Das letzte Mal, als ich es überprüft habe, war ein "Nein". Sie müssen Ihre eigene Such-/Ersetzungsfunktion implementieren.
http://community.icsharpcode.net/forums/p/11536/31542.aspx#31542
Sie finden schnell hinzufügen/ersetzen von hier - http://www.codeproject.com/Articles/173509/A-Universal-WPF-Find-Replace-Dialog
ICSharpCode.AvalonEdit 4.3.1.9429
Suchen und Highlight Artikel.
private int lastUsedIndex = 0;
public void Find(string searchQuery)
{
if (string.IsNullOrEmpty(searchQuery))
{
lastUsedIndex = 0;
return;
}
string editorText = this.textEditor.Text;
if (string.IsNullOrEmpty(editorText))
{
lastUsedIndex = 0;
return;
}
if (lastUsedIndex >= searchQuery.Count())
{
lastUsedIndex = 0;
}
int nIndex = editorText.IndexOf(searchQuery, lastUsedIndex);
if (nIndex != -1)
{
var area = this.textEditor.TextArea;
this.textEditor.Select(nIndex, searchQuery.Length);
lastUsedIndex=nIndex+searchQuery.Length;
}
else
{
lastUsedIndex=0;
}
}
Betrieb ersetzen:
public void Replace(string s, string replacement, bool selectedonly)
{
int nIndex = -1;
if(selectedonly)
{
nIndex = textEditor.Text.IndexOf(s, this.textEditor.SelectionStart, this.textEditor.SelectionLength);
}
else
{
nIndex = textEditor.Text.IndexOf(s);
}
if (nIndex != -1)
{
this.textEditor.Document.Replace(nIndex, s.Length, replacement);
this.textEditor.Select(nIndex, replacement.Length);
}
else
{
lastSearchIndex = 0;
MessageBox.Show(Locale.ReplaceEndReached);
}
}
Fügen Sie im TextEditor-Konstruktor im ICSharpCode.AvalonEdit-Projekt SearchPanel.Install hinzu (this.TextArea); und voila, mit ctrl + f öffnet das Suchfenster.
(mit der Leitung von Stephen McDaniel Post (myEditor mit diesem ersetzen) auch funktioniert, aber die Unterstützung für SearchInputHandler entfernt wird)
(funktioniert gut mit AvalonEdit innen AvalonDock mit MVVM)
Von:
public TextEditor() : this(new TextArea())
{
}
An:
public TextEditor() : this(new TextArea())
{
SearchPanel.Install(this.TextArea);
}
Für Avalon bearbeiten Version 5.0.1.0, gerade dies tun:
SearchPanel.Install(XTBAvalonEditor);
Wo XTBAvalonEditor ist die WPF AvalonEdit Steuer Namen.
Stellen Sie sicher, diese Anweisung using hinzuzufügen:
using ICSharpCode.AvalonEdit.Search;
Dann, wenn der Editor den Fokus hat, drücken Sie CTL-F: Sie werden die Fundsteuer Ecke Pop-up in der oberen rechten Hand sehen.
Gibt es noch etwas zu tun? Nachdem ich es auf diese Weise "installiert" habe, erscheint es, wenn ich auf CTRL-F klicke, aber ich kann es nicht eingeben. – Gimly
- 1. Zeige Grenze auf AvalonEdit: TextEditor
- 2. AvalonEdit programmgesteuert Syntaxhervorhebungsregeln hinzufügen
- 3. Zwei-Wege-Bindung in AvalonEdit funktioniert nicht
- 4. AvalonEdit :: Wie behalte ich den aktuellen Zustand im UndoStack?
- 5. TypeAhead-Suchfunktion
- 6. Suchfunktion unvollständig
- 7. Suchfunktion mit PyGTKsourceview
- 8. Zeige ungültige XML-Syntax mit AvalonEdit
- 9. contentEditable Texteditor und Cursorposition
- 10. Suchfunktion auf D3.js
- 11. Laravel 5.2 - Suchfunktion
- 12. Grails: findAllByTitle() als Suchfunktion?
- 13. Suchfunktion mit afnetworking ios
- 14. JavaScript-Suchfunktion schnell machen
- 15. Suchfunktion für Bilder
- 16. Suchfunktion vor Ort funktioniert nicht
- 17. Suchfunktion kehrt nicht Ergebnis
- 18. Suchfunktion rekursiv Binary Tree
- 19. MVC3 ActionLink mit Suchfunktion
- 20. Suchfunktion mit editText - ListView
- 21. Suchfunktion fehlgeschlagen asp.net mvc
- 22. Suchfunktion, zugrunde liegender Datumswert
- 23. Android-Suchfunktion mit Aktionsleiste
- 24. Wie erstelle ich eine 'Suchfunktion' für eine Webseite?
- 25. Texteditor in Java
- 26. PHP: Eine schnelle Login-Funktion?
- 27. Grafikbild im Texteditor speichern?
- 28. Python visueller Texteditor
- 29. moderner Texteditor ähnlich Acme
- 30. Eclipse Texteditor Größenanpassung
Und für XAML? Es ist nicht möglich? –
Es gibt eine Menge Dinge, von denen ich wünschte, dass sie einfach in XAML verwendet werden könnten, wenn es um AvalonEdit geht. Normalerweise erben wir von TextEditor, um es zu erweitern. In einem meiner Projekte habe ich es sogar "BindableTextEditor" genannt, weil ich nur Hooks hinzugefügt habe, um es einfach zu binden. Ich bin kein XAML-Experte, also gibt es vielleicht einen besseren Weg, dies zu tun (Verhalten?), Aber das ist die Richtung, in die ich gehen würde, wenn Sie dies über XAML steuern wollen. –
Brilliant !!! Vielen Dank! – peter70