2012-08-15 65 views
0

我有一个带有一个或多个文本文件的列表框,我将打印为命令。 但我不知道如何使流读取器从列表框中读取?从列表框中读取项目

到目前为止,我得到这个.:

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(); 

} 

是有enyway我可以改变 “C:\ myfile.txt的” 还是我用 “的foreach”?

+0

ps。在我的代码中,我假设你的Listbox的ID是'lb' – 2012-08-15 09:37:08

回答

0

你想要这样的东西吗?我不完全明白这个问题

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); 
} 

好吧,让你有列表框填充文件名?

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

我的Listbox包含一个文件名列表。我希望所有这些被streamreader读取,然后打印出来。 btw。我不能让ListItem工作。 :S – 2012-08-15 10:03:15

+0

这就是代码的第二部分? – 2012-08-15 10:03:46

+0

是啊。我不能找到ListItem :( – 2012-08-15 10:11:28