按发生顺序打印列表框项目

时间:2015-03-04 22:39:11

标签: c# printing

我有一个我已经构建的应用程序,只是一种打印应用程序。 首先我填充ListBox并格式化它然后转到c:\ somefolder 在某个文件夹中是pdf文件,它在列表框中查找并查看是否有任何文件名与列表框中的项目匹配并将其发送到默认打印机。一切都运行良好,但是说我有JohnDoe.pdf,ShahRukh.pdf, Vijay.pdf 如何让它按顺序发送文件,现在它工作得很好,但我希望能够打印==>首先是JohnDoe.pdf,然后是ShahRukh.pdf,依旧等等。如果您有任何想法,请随时欢迎。 提前致谢。这就是我现在所做的很好但打印所有匹配但随机的项目。我希望它按照从上到下的顺序响应或打印匹配。

public class Pdf
{
    public static Boolean PrintPDFs(string pdfFileName)
    {
        try
        {
            ProcessStartInfo stackOverflowHelp = new ProcessStartInfo();
            stackOverflowHelp.Verb = "print";
            stackOverflowHelp.FileName = pdfFileName;
            stackOverflowHelp.CreateNoWindow = true;
            stackOverflowHelp.WindowStyle = ProcessWindowStyle.Hidden;

            Process gamingBoy = new Process();
            gamingBoy.StartInfo = stackOverflowHelp;
            gamingBoy.Start();
            gamingBoy.WaitForInputIdle();

            if (gamingBoy.HasExited == false)
            {
                gamingBoy.WaitForExit(20000);
                //return true;
            }
            //  System.Threading.Thread.Sleep(1000);
            gamingBoy.EnableRaisingEvents = true;
            gamingBoy.Close();
            //  return true;
            //proc.Close();
            //KillAdobe("AcroRd32");
            return true;
        }
        catch
        {
            return false;
        }
    }

private void button2_Click(object sender, EventArgs e)
{
    string dir = @"C:\slim\slimyyyy";//
    if (Directory.Exists(dir))//If a directory defined above exists then do the followings
    {
        string[] pdf_Files = Directory.GetFiles(dir);
        if (pdf_Files.Length > 0)
        {
            foreach (string file in pdf_Files) 
            {
                string fileName = Path.GetFileName(file);
                foreach (object item in listBox1.Items)
                {
                    if (fileName == line.ToString())
                    {
                        Pdf.PrintPDFs((file));
                    }
                }
            }
        }
    }
}

2 个答案:

答案 0 :(得分:0)

只需颠倒foreach循环的顺序:

foreach (object item in listBox1.Items)
{
     foreach (string file in pdf_Files) 
     {
         string fileName = Path.GetFileName(f);
         if (fileName == line.ToString())
         {
              Pdf.PrintPDFs((file));
         }
    }
}

答案 1 :(得分:0)

简单的答案是改变循环的顺序。也就是说,将循环更改为:

foreach (var item in listBox1.Items)
{
    var fname = item.ToString();
    if (pdf_files.Contains(fname))
    {
        Pdf.PrintPDFs(fname);
    }
}