【问题标题】:read items from listbox从列表框中读取项目
【发布时间】:2012-08-15 21:16:17
【问题描述】:

我有一个包含 1 个或多个文本文件的列表框,我将其作为命令打印。 但我不知道如何让流阅读器从列表框中读取?

到目前为止,我得到了这个。:

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

}

是否可以更改“C:\myfile.txt”或者我必须使用“foreach”?

【问题讨论】:

  • ps。在我的代码中,我假设您的列表框的 ID 是 lb

标签: c# listbox streamreader


【解决方案1】:

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

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

【讨论】:

  • 我的列表框包含一个文件名列表。我希望所有这些都由流式阅读器读取,然后打印出来。顺便提一句。我无法让 ListItem 工作。 :S
  • 是的。我找不到 ListItem :(
  • 是winforms、webforms还是wpf? msdn.microsoft.com/en-us/library/…
  • 我相信 winforms 因为您的回复 msdn.microsoft.com/en-us/library/… 所以您可以通过将 ListItem 替换为 var 或 string 来迭代项目。
  • 是的,它的胜利表格。好的..这次发生了一些事情,多亏了你的代码......但是当点击我的OutputBtn时。它打印一个空白文档而不是我的列表框中的项目
猜你喜欢
  • 2011-11-10
  • 2020-11-01
  • 2019-06-03
  • 2015-10-25
  • 1970-01-01
  • 1970-01-01
  • 2015-10-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多