2017-01-25 4 views
0

Ceci est mon code. J'ai un richTextBox et j'ai chargé un fichier txt dedans. J'ai un combobox qui montre le nom de l'employé. Ce que j'essaie de faire est de faire en sorte que la riche zone de texte charge 4 lignes de texte à partir du fichier txt lorsqu'un enregistrement est sélectionné dans la liste déroulante. Le code de tout fonctionne sauf obtenir les 4 lignes de texte.Essayer de charger 4 lignes de code d'un fichier txt dans une zone de texte enrichie

using (StreamReader reader = File.OpenText("employeeData.txt")) ` 
{ 
    for (var i = 0; i < 5; i++)  
    { 
     reader.ReadLine();  ` 

     numLines = employeeDataRichTextBox.Lines.Count(); 

    } 
    employeeDataRichTextBox.Text = reader.ReadToEnd(); 
} 
+0

Dans votre code spécifique, vous ne lisez pas les lignes. Dans tous les cas, vous pouvez les stocker dans un constructeur de chaîne. – Gino

+0

Vous pouvez le faire avec un one-liner: 'employeeDataRichTextBox.Text = string.Join (Environment.NewLine, File.ReadLines (" employeeData.txt "). Prendre (4));' – itsme86

Répondre

2

Vous consommez les lignes avant de les définir dans la zone de texte, donc rien ne sera ajouté.

Changer le code à ceci:

using (StreamReader reader = File.OpenText("employeeData.txt")) 
{ 
     for (var i = 0; i < 4; i++) 
      employeeDataRichTextBox.Text += reader.ReadLine() + "\r\n"; 
} 
+0

Merci, il a travaillé –

+0

Je ne peux pas obtenir pour travailler pour d'autres déclarations if. (var i = 4; i <8; i ++) Quand je mets le code à ça ça ne marche pas? Comment devrais-je sauter les 4 premières lignes. –

+0

Vous devez d'abord consommer les quatre lignes, alors faites d'abord une boucle de 0 à 4 qui lit seulement les lignes et ne les attribue pas à la tb, puis faites une autre de 0 à 4 qui lit les lignes à la tb. Les nombres à la boucle for n'influencent pas du tout la lecture du flux, c'est séquentiel. – Gusman

0

reader.ReadLine() lit la ligne courante et avance à la ligne suivante. Votre code lit 4 lignes mais ne les place dans aucune variable. Ensuite, lorsque le lecteur est sur la cinquième ligne, vous lui dites de lire de cette ligne pour finir.

add varialbe en dehors de la boucle for

List<string> listOfLines = new List<string>() 

modifier

reader.ReadLine(); 

dans

listOfLines.Add(reader.ReadLine()); 

et enfin mettre ces lignes en zone de texte

employeeDataRichTextBox.Text = string.Join(Environment.NewLine, listOfLines.ToArray()); 
+0

Il dit streamreader ne contient pas une définition de .Readline –

+0

oh, allez. C'est 'ReadLine()', avec majuscule L et parenthèses. Ce n'est pas si difficile de modifier le code. Essayez de comprendre le code, pas seulement copier/coller la solution. – Nino

+0

C'était une faute de frappe de ma part seulement pour ce commentaire. J'ai suivi sa solution et j'ai essayé de la faire fonctionner et si vous n'allez pas la peine d'aider, ne prenez pas la peine d'ajouter un commentaire. –