Domanda

Ho l'obbligo di creare un'applicazione che aprirà circa 10 mb di file di registro ed evidenzierà alcune espressioni.

Pensavo che usare WPF e richtextbox funzionasse, ma il tempo di rendering di richtextbox è inaccettabile.

C'è qualcosa che ha richtextbox come l'evidenziazione, ma ha prestazioni migliori?

Esiste un altro modo per farlo?

È stato utile?

Soluzione

Scintilla http://www.scintilla.org/ viene utilizzato come casella per la modifica del codice. Fornisce l'evidenziazione per molte diverse sintassi del codice. Potresti essere in grado di usarlo e specificare le parti che devi evidenziare.

Altri suggerimenti

Se non è necessario consentire all'utente di modificare i registri, potrebbe essere possibile cavarsela utilizzando un TextBlock e avvolgere le sezioni da evidenziare in <Style> tag che completano l'evidenziazione.

Come stai generando il tuo Flowdocument - a seconda di cosa stai facendo potresti essere in grado di accelerarlo. Tuttavia, anch'io ho riscontrato questi problemi, soprattutto perché hai per generare FlowDocument sul thread dell'interfaccia utente e se impiega troppo tempo finisci con una schermata nera.

Se capisco quello che stai dicendo, vuoi una sintassi che evidenzi il controllo RTB. Il mio preferito è il controllo AvalonEdit, (Ecco un articolo su codeproject al riguardo: http://www.codeproject.com/Articles/42490/Using-AvalonEdit-WPF-Text-Editor ) che può evidenziare la sintassi come l'editor in Visial Studio. Ha anche il completamento automatico, che gli utenti finali adoreranno.

Se vuoi qualcos'altro, c'è anche l'editor del codice ICSharp. (Ecco un altro articolo su codeproject al riguardo: http://www.codeproject.com/ Articoli / 30936 / Using-ICSharpCode-TextEditor ) Questo ha praticamente le stesse caratteristiche di AvalonEdit, e mi piace anche questo. In realtà ho usato l'editor del codice ICSharp in un'app che ho creato ed ero abbastanza soddisfatto delle funzionalità.

Per quanto ne so, entrambi questi controlli sono molto efficienti e sarebbero meglio di un semplice richtextbox.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top