L'affichage d'un fichier texte sur un Formulaire Windows pour C#
J'essaie d'afficher le contenu d'un fichier txt.
J'ai pensé que je devrais utiliser RichTextBox pour cette méthode. Ce que j'ai fait a été de ce. Toutefois, il ne fonctionne pas.
public static byte[] ReadFile() {
FileStream fileStream = new FileStream(@"help.txt", FileMode.Open, FileAccess.Read);
byte[] buffer;
try {
int length = (int)fileStream.Length; //get file length
buffer = new byte[length]; //create buffer
int count; //actual number of bytes read
int sum = 0; //total number of bytes read
//read until Read method returns 0 (end of the stream has been reached)
while ((count = fileStream.Read(buffer, sum, length - sum)) > 0)
sum += count; //sum is a buffer offset for next reading
} finally {
fileStream.Close();
}
return buffer;
}
private void richTextBox1_TextChanged(object sender, EventArgs e) {
ReadFile();
}
- Dans ce code, vous n'êtes pas assigner n'importe quel texte de votre richTextBox1.
Vous devez vous connecter pour publier un commentaire.
Vous avez un couple de problèmes ici.
Je suppose que richTextBox1_TextChanged est associée à l'événement de modification de la RichTextBox que vous voulez remplir. Cela signifie qu'il n'est pas exécutée, sauf si vous modifiez manuellement le contenu de la RichTextBox lui-même.
En outre, dans la méthode que vous appelez une méthode (ReadFile) qui lire votre fichier et retourner le contenu comme un byte[], mais le résultat se perdre puisque vous ne l'utilisez pas, de toute façon.
Alors, même la façon dont vous lisez le fichier n'est pas correct, puisque vous êtes la lecture de tous les fichiers à la fois (vous spécifiez pour lire le nombre exact de caractères contenue dans le fichier), de sorte que la boucle while n'est pas nécessaire.
Je voudrais joindre à l'événement load du formulaire et écrire quelque chose comme ceci:
Vous devez ajouter cette ligne dans le InitializeComponent() de votre formulaire:
J'ai peut-être raté quelque chose mais je ne vois pas où vous en êtes avec l'ajout de la suite de votre lecture de la zone de texte!
Vous êtes de retour de la mémoire tampon, mais ne pas l'utiliser n'importe où.
Ce faire:
Ont un bouton.
Sur le bouton cliquez sur, appel ReadFile(), de convertir byte[] a reçu de ReadFile() à la chaîne et l'afficher dans la zone de texte.
Load
de l'événement et de le faire là. Il n'y a pas besoin d'un bouton.Utiliser ceci:
Dans la forme du constructeur, écrire le code suivant:
Ce lit tout le texte dans le fichier donné en une seule fois et il l'attribue à la zone de texte enrichi. Pendant que vous lisez le texte dans votre méthode, vous n'êtes pas convertir le résultant
byte
tableau à une chaîne et que vous n'êtes pas à l'affecter à la zone de texte enrichi. Il suffit de lire le fichier ne sera pas vous aider.Veuillez retirer le
TextChanged
événement aussi: LaTextChanged
événement est appelé à chaque fois que le texte dans la zone de texte enrichi est changé. C'est également le cas lors de la définition d'une nouvelle valeur à laText
de la propriété, ce qui entraînerait une récursion infinie. Aussi, cet événement n'est jamais appelé lorsque le texte ne change pas, en premier lieu, de sorte que vous devez saisir du texte manuellement dans la zone de texte enrichi pour déclencher cet événement.Modifier la méthode à la suivante et vous n'avez pas besoin de zone de texte enrichi, une zone de texte simple peut servir l'objectif.
help.txt
dans une zone de texte enrichi. Alors qu'il pourrait le faire à l'aide d'une normale zone de texte, trop, il a encore besoin d'un peu de contrôle pour afficher le texte. La question n'est pas à propos de la lecture du texte, mais sur l'affichage du texte.