Io uso AvalonEdit:TextEditor
. Posso abilitare la finestra di dialogo di ricerca rapida (su Ctrl-F per esempio) per questo controllo? O forse qualcuno ha il codice per le parole di ricerca nel testo AvalonEdit:TextEditor
?AvalonEdit: TextEditor ha una funzione di ricerca/sostituzione rapida?
risposta
non c'è molto documentazione a riguardo, ma AvalonEdit ha un costruito in SearchPanel classe che suona esattamente come quello che vuoi. C'è anche una classe SearchInputHandler che lo rende banale per farlo collegato al vostro editor, rispondendo alle scorciatoie da tastiera, ecc Ecco alcuni esempi di codice che attaccato la logica di ricerca standard per un editore:
myEditor.TextArea.DefaultInputHandler.NestedInputHandlers.Add(new SearchInputHandler(myEditor.TextArea));
Ecco uno screenshot di come apparirà (questo è preso da ILSpy che utilizza AvalonEdit). Puoi vedere il controllo di ricerca in alto a destra, le opzioni di ricerca che supporta e l'evidenziazione automatica che fa dei risultati corrispondenti.
Non c'è alcun supporto per sostituire ... ma se avete solo bisogno la ricerca, questo può essere una grande soluzione.
L'ultima volta che ho controllato era un "No". Dovrai implementare la tua funzionalità di ricerca/sostituzione.
http://community.icsharpcode.net/forums/p/11536/31542.aspx#31542
È possibile aggiungere rapidamente trovare/sostituire da qui - http://www.codeproject.com/Articles/173509/A-Universal-WPF-Find-Replace-Dialog
ICSharpCode.AvalonEdit 4.3.1.9429
ricerca ed evidenziare oggetto.
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;
}
}
Sostituire funzionamento:
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);
}
}
Nel costruttore TextEditor nel progetto ICSharpCode.AvalonEdit, aggiungere SearchPanel.Install (this.TextArea); e voilà, usando ctrl + f si apre la finestra di ricerca.
(utilizzando la linea dal post di Stephen McDaniel (sostituire myEditor con questo) funziona anche, ma il supporto per SearchInputHandler è stato rimosso)
(funziona bene con AvalonEdit all'interno AvalonDock con MVVM)
Da:
public TextEditor() : this(new TextArea())
{
}
A:
public TextEditor() : this(new TextArea())
{
SearchPanel.Install(this.TextArea);
}
Per Avalon Edit Versione 5.0.1.0, solo fare questo:
SearchPanel.Install(XTBAvalonEditor);
Dove XTBAvalonEditor è il nome del controllo WPF AvalonEdit.
Assicurarsi di aggiungere questa istruzione using:
using ICSharpCode.AvalonEdit.Search;
Poi, quando l'editor è attivo, premere CTL-F: vedrete il controllo ritrovamento pop-up in alto a destra.
C'è qualcosa da fare oltre a quello? Dopo averlo "installato" in questo modo, compare quando clicco su CTRL-F, ma non riesco a scriverlo. – Gimly
- 1. Mostra il bordo su avalonEdit: TextEditor
- 2. AvalonEdit Cambia sintassi Evidenziazione nel codice
- 3. AvalonEdit :: Come posso mantenere lo stato corrente in UndoStack?
- 4. Coda prioritaria con una funzione di ricerca - Implementazione più rapida
- 5. VBScript ha una funzione substring()?
- 6. xslt ha una funzione split()?
- 7. Funzione di classe in estensione rapida (categoria)
- 8. go ha una funzione di "stampa" integrata?
- 9. LES ha una funzione di "estensione"?
- 10. Hive ha una funzione di suddivisione stringa?
- 11. Swift ha una funzione di logaritmo incorporata?
- 12. Sintassi XML non valida con AvalonEdit
- 13. L'associazione a due vie in AvalonEdit non funziona
- 14. AvalonEdit evidenzia i caratteri corrispondenti
- 15. Spostamento bit in funzione generica rapida
- 16. Ha una buona funzione di hash per una tabella hash C++?
- 17. Oracle ha una funzione hash incorporata?
- 18. La classe ha una funzione virtuale? C++
- 19. SAS ha una funzione inline se funzione o ternaria?
- 20. PHPUnit ha una funzione di comparazione di array ricorsiva incorporata?
- 21. Qt ha una funzione di debugging delle variabili di orologio
- 22. La dimensione della tastiera ha cambiato evento in rapida?
- 23. Parametri funzione XCode Show Tasto di scelta rapida
- 24. Chiamata a una funzione globale che ha lo stesso nome di una funzione membro
- 25. Python ha una funzione incorporata per estrarre una stringa multilinea?
- 26. Does Sublime Text 2 ha una funzione di completamento automatico?
- 27. ottenere l'ID di un elemento che ha chiamato una funzione
- 28. AlertDialog in una funzione che ha un valore di ritorno
- 29. moltiplicazione rapida/rapida di interi in ruby?
- 30. "Ricerca rapida" per una tabella SWT
E per XAML? Non è possibile? –
Ci sono molte cose che vorrei fossero facili da usare in XAML quando si tratta di AvalonEdit. Di solito finisco per ereditare da TextEditor per estenderlo. In uno dei miei progetti, penso di averlo chiamato anche "BindableTextEditor" perché tutto ciò che ho aggiunto erano ganci per rendere più facile il binding. Non sono un esperto di XAML, quindi forse c'è un modo migliore per farlo (comportamenti?), Ma questa è la direzione in cui vorrei entrare se vuoi controllarlo tramite XAML. –
Brillante !!! Grazie! – peter70