Używam AvalonEdit:TextEditor
. Czy mogę włączyć okno dialogowe szybkiego wyszukiwania (na przykład Ctrl-F) dla tej kontrolki? A może ktoś ma kod do wyszukiwania słów w tekście AvalonEdit:TextEditor
?Czy AvalonEdit: TextEditor ma funkcję szybkiego wyszukiwania/zamiany?
Odpowiedz
Nie ma wiele dokumentacji o tym, ale AvalonEdit ma wbudowany SearchPanel klasy, który brzmi dokładnie tak, jak to, co chcesz. Jest nawet SearchInputHandler klasa sprawia, że to banalne, aby ją podłączyć do edytora, odpowiadając na skróty klawiaturowe, itp Oto przykładowy kod, który dołączony standardową logikę wyszukiwarki do edytora:
myEditor.TextArea.DefaultInputHandler.NestedInputHandlers.Add(new SearchInputHandler(myEditor.TextArea));
Oto zrzut ekranu pokazujący, jak będzie wyglądał (pochodzi z ILSpy, który używa AvalonEdit). Możesz zobaczyć kontrolkę wyszukiwania w prawym górnym rogu, opcje wyszukiwania, które obsługuje, i automatyczne podświetlanie, jakie ma pasujące wyniki.
Nie ma żadnego wsparcia dla zastąpić ... ale jeśli wystarczy szukają, może być doskonałym rozwiązaniem.
Ostatni raz, kiedy sprawdzałem, był "Nie". Będziesz musiał wprowadzić własną funkcję wyszukiwania/zamiany.
http://community.icsharpcode.net/forums/p/11536/31542.aspx#31542
można szybko znaleźć dodać/wymienić stąd - http://www.codeproject.com/Articles/173509/A-Universal-WPF-Find-Replace-Dialog
ICSharpCode.AvalonEdit 4.3.1.9429
Search i podkreślają pozycję.
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;
}
}
Wymień operację:
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);
}
}
W konstruktorze TextEditor w projekcie ICSharpCode.AvalonEdit dodaj SearchPanel.Install (this.TextArea); i voila, używając ctrl + f otwiera okno wyszukiwania.
(za pomocą linii od słupka Stephena McDaniel (zastąpić myEditor z tego) też działa, ale wsparcie dla SearchInputHandler jest usuwany)
(dobrze współpracuje z AvalonEdit wewnątrz AvalonDock z MVVM)
Skąd:
public TextEditor() : this(new TextArea())
{
}
Do:
public TextEditor() : this(new TextArea())
{
SearchPanel.Install(this.TextArea);
}
Avalon Edycja wersja 5.0.1.0, po prostu to zrobić:
SearchPanel.Install(XTBAvalonEditor);
Gdzie XTBAvalonEditor jest nazwą kontrola WPF AvalonEdit.
Upewnij się, aby dodać tę using:
using ICSharpCode.AvalonEdit.Search;
wtedy, gdy edytor ma ostrość, naciśnij CTL-F: Zobaczysz kontrola znalezisko pojawiają się w prawym górnym rogu.
Czy jest coś oprócz tego? Po "zainstalowaniu" tego w ten sposób pojawia się po kliknięciu CTRL-F, ale nie mogę go wpisać. – Gimly
- 1. Czy LESS ma funkcję "rozszerzania"?
- 2. Czy java ma funkcję clampowania?
- 3. AvalonEdit :: Jak zachować aktualny stan w UndoStack?
- 4. Wiązanie dwukierunkowe w AvalonEdit nie działa
- 5. AvalonEdit Podświetl pasujące znaki
- 6. Czy funkcja xslt ma funkcję split()?
- 7. Czy Hive ma dynamiczną funkcję obrotu
- 8. Jak sprawdzić, czy obiekt ma funkcję? (Dojo)
- 9. Czy Python ma funkcję zmniejszania ułamków?
- 10. Czy C++ ma darmową funkcję "size (object)"?
- 11. Czy Xcode ma funkcję autoformatowania kodu?
- 12. Czy Oracle ma wbudowaną funkcję skrótu?
- 13. Czy Swift ma wbudowaną funkcję logarytmu?
- 14. Czy Ruby ma wbudowaną funkcję ... while?
- 15. AvalonEdit: Cascading HighlightingColorizers
- 16. Jak uzyskać pozycję kursora w zaćmieniu TextEditor
- 17. Wyświetlanie nieprawidłowej składni XML z AvalonEdit
- 18. go ma wbudowaną funkcję "drukowania"?
- 19. ma funkcję dopasowania do wywołania „”
- 20. Jak uzyskać widok konspektu w podniosłym texteditor?
- 21. Czy PHP ma funkcję wykrywania systemu operacyjnego, na którym działa?
- 22. Czy funkcja SASS/SCSS/Compass ma funkcję SWITCH?
- 23. Czy PHPUnit ma wbudowaną funkcję porównywania tablic rekurencyjnych?
- 24. Czy Vim ma funkcję automatycznego komentarza opartą na składni pliku?
- 25. Czy R ma funkcję uruchamiającą się lub kończącą jak python?
- 26. Czy mogę skomponować funkcję, która ma ukryty argument?
- 27. Czy python ma wbudowaną funkcję do przeplatania generatorów/sekwencji?
- 28. Jak ustalić, czy dana klasa ma określoną funkcję na szablonie?
- 29. Istniejący obiekt docelowy nie ma sekcji "szybkiego generowania kodu kompilatora"
- 30. Czy wybrać funkcję członka lub funkcję znajomego, gdy funkcja ma zmienić stan obiektu?
A dla XAML? To niemożliwe? –
Jest wiele rzeczy, które chciałbym były łatwe w użyciu w XAML, jeśli chodzi o AvalonEdit. Zwykle kończę dziedziczenie z 'TextEditor', aby go rozszerzyć. W jednym z moich projektów, myślę, że nawet nazwałem go "BindableTextEditor", ponieważ wszystkie dodane zostały haki, aby ułatwić wiązanie. Nie jestem ekspertem XAML, więc być może jest lepszy sposób na zrobienie tego (zachowania?), Ale to jest kierunek, w którym chciałbym wejść, jeśli chcesz kontrolować to poprzez XAML. –
Genialny !!! Dzięki! – peter70