2012-08-15 2 views
0

J'ai une liste avec 1 ou plusieurs fichiers de texte, que je vais imprimer comme des commandes. mais je ne sais pas comment faire lire le streamreader de listbox?lire les articles de la liste

jusqu'à présent, j'ai obtenu ceci .:

public void OutputBtn_Click(object sender, EventArgs e) 
{ 
    PrintDocument PrintD = new PrintDocument(); 
    PrintD.PrintPage += new PrintPageEventHandler(this.PrintDocument_PrintPage); 
    StreamReader SR = new StreamReader("C:\\myfile.txt"); 
    PrintD.Print(); 

} 

est là enyway je peux changer "C: \ myfile.txt" ou dois-je utiliser "foreach"?

+0

ps. dans mon code, j'ai supposé que l'ID de votre Listbox est 'lb' –

Répondre

0

Voulez-vous quelque chose comme ça? Je ne comprends pas complètement la question

string[] fileEntries = Directory.GetFiles("C:\\temp\\").Where(p => 
           p.EndsWith(".txt")).ToArray<string>(); 
foreach (string fileName in fileEntries) 
{ 
    lb.Items.Add(new ListItem(fileName, fileName); 
} 

Ok, donc vous avez la liste remplie de noms de fichiers?

private StreamReader sr; 

public void OutputBtn_Click(object sender, EventArgs e) 
{ 
    foreach(var li in lb.Items) 
    { 
     PrintDocument PrintD = new PrintDocument(); 
     PrintD.PrintPage += new PrintPageEventHandler(this.PrintDocument_PrintPage); 
     sr = new StreamReader(li.ToString()); 
     PrintD.Print();   
    } 
} 

private void PrintDocument_PrintPage(object sender, PrintPageEventArgs ev) 
{ 
    float linesPerPage = 0; 
    float yPos = 0; 
    int count = 0; 
    float leftMargin = ev.MarginBounds.Left; 
    float topMargin = ev.MarginBounds.Top; 
    String line = null; 

    // Calculate the number of lines per page. 
    linesPerPage = ev.MarginBounds.Height/
     printFont.GetHeight(ev.Graphics) ; 

    // Iterate over the file, printing each line. 
    while (count < linesPerPage && ((line = sr.ReadLine()) != null)) 
    { 
     yPos = topMargin + (count * printFont.GetHeight(ev.Graphics)); 
     ev.Graphics.DrawString (line, printFont, Brushes.Black, 
      leftMargin, yPos, new StringFormat()); 
     count++; 
    } 

    // If more lines exist, print another page. 
    if (line != null) 
     ev.HasMorePages = true; 
    else 
     ev.HasMorePages = false; 
} 
+0

ma Listbox contient une liste de noms de fichiers. Je veux que tous ces documents soient lus par le lecteur de flux et ensuite imprimés. btw. Je ne peux pas obtenir le ListItem pour fonctionner. : S –

+0

donc c'est exactement la deuxième partie du code? –

+0

ouais bien. je ne peux pas trouver ListItem :( –

Questions connexes