J'ai une chaîne massive (nous parlons 1696108 caractères) que j'ai lu très rapidement à partir d'un fichier texte. Lorsque je l'ajoute à ma zone de texte (C#), cela prend beaucoup de temps. Un programme comme Notepad ++ (code non géré, je sais) peut le faire presque instantanément, même si le Bloc-notes prend également beaucoup de temps. Comment puis-je ajouter efficacement cette énorme chaîne et comment quelque chose comme Notepad ++ le fait si vite?Comment puis-je ajouter une énorme chaîne à une zone de texte de manière efficace?
Répondre
La classe Bloc-notes et fenêtre TextBox est optimisée pour le texte 64K. Vous devez utiliser RichTextBox
Vous pouvez, au départ, simplement rendre les n premiers caractères visibles dans l'interface utilisateur (en supposant que vous ayez une zone de texte déroulante). Ensuite, démarrez un thread distinct pour rendre les blocs successifs de manière asynchrone.
Vous pouvez également le combiner avec votre flux d'entrée à partir du fichier. Lire un morceau et l'ajouter immédiatement à la zone de texte. Exemple (non exhaustive, mais vous voyez l'idée) ...
private void PopulateTextBoxWithFileContents(string path, TextBox textBox)
{
using (var fs = File.OpenRead(path))
{
using (var sr = new StreamReader(fs))
{
while (!sr.EndOfStream)
textBox.Text += sr.ReadLine();
sr.Close();
}
fs.Close();
}
}
Si cela est Windows Forms Je suggère d'essayer RichTextBox comme solution de remplacement pour votre TextBox. Dans le passé, je l'ai trouvé beaucoup plus efficace pour gérer du texte volumineux. De même, lorsque vous effectuez des modifications sur place, veillez à utiliser la méthode SelectionStart/SelectedText testée dans le temps au lieu de manipuler la propriété Text.
rtb.SelectionStart = rtb.TextLength;
rtb.SelectedText = "inserted text"; // faster
rtb.Text += "inserted text"; // slower
- 1. Ajouter une grande zone de texte à une page
- 2. Manière plus efficace de décaper une chaîne
- 3. Comment ajouter une zone de texte dynamiquement?
- 4. comment ajouter plusieurs valeurs une zone de texte à une autre zone de texte en javascript?
- 5. Comment ajouter une chaîne à une zone de texte avec des couleurs différentes?
- 6. VB.NET Ajouter continuellement un à une zone de texte
- 7. Comment ajouter une zone de texte à Dynamic GridView
- 8. Ajouter dynamiquement une zone de texte à l'aide de jquery
- 9. Ajouter une zone de texte illimitée à un document PDF
- 10. Ajouter une ligne à DGV lié par zone de texte
- 11. Comment ajouter une zone de texte sur un bouton cliquer?
- 12. Comment ajouter une chaîne de tableau à une zone de liste dans NetBeans
- 13. Comment ajouter du texte dans une zone riche de texte dans VB.NET sur une ligne spécifiée
- 14. Comment sélectionner une chaîne de manière aléatoire
- 15. Comment ajouter à une zone de texte la ligne rouge (comme une mauvaise orthographe dans Word)?
- 16. SetFocus à une zone de texte wpf
- 17. Utilisation d'une chaîne de saisie dans une zone de texte
- 18. Comment puis-je réutiliser une connexion HttpClient de manière efficace?
- 19. comment ajouter une zone de liste déroulante
- 20. Comment ajouter par programme NewLines à une zone de texte d'élément de travail TFS?
- 21. Combien de fois une chaîne se produit-elle dans une autre chaîne (zone de texte) VB.NET
- 22. Convertir une valeur d'une zone de texte en une zone de texte sous une autre forme
- 23. Comment puis-je concaténer de manière optimale une liste de caractères à une chaîne?
- 24. Jquery + Mettre à jour une zone de texte d'une autre zone de texte dans une grille
- 25. Comment puis-je intégrer une zone de texte dans une autre zone de texte en HTML?
- 26. Comment masquer automatiquement une zone de texte
- 27. Web Method acceptant une énorme chaîne xml
- 28. CSS/HTML - chaîne longue encapsulée dans une zone de texte?
- 29. Comment effacer une zone de texte onfocus?
- 30. Jquery comment - zone de texte asp.net change met à jour une autre zone de texte