C# 按出现顺序打印列表框项目
我有一个应用程序,我已经建立,只是一种打印应用程序。 首先我填充ListBox并格式化它,然后转到c:\somefolder 在一些文件夹中是pdf文件,它会在列表框中查看是否有与列表框中的项目匹配的文件名,并将其发送到默认打印机。一切都很正常,但假设我有JohnDoe.pdf、ShahRukh.pdf、Vijay.pdf 我如何才能让它发送文件的顺序,现在它的工作很好,但我想能够打印==>JohnDoe.pdf第一,然后ShahRukh.pdf等等。请如果你有任何想法,备用是非常欢迎的。 提前谢谢。这就是我现在拥有的,它工作得很好,但打印所有匹配的项目,但随机。我希望它响应或打印匹配的发生顺序从上到下C# 按出现顺序打印列表框项目,c#,printing,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));
}
}
}
}
}
}
只需颠倒foreach循环的顺序:
简单的答案是改变循环的顺序。也就是说,将循环更改为:
foreach (var item in listBox1.Items)
{
var fname = item.ToString();
if (pdf_files.Contains(fname))
{
Pdf.PrintPDFs(fname);
}
}
H、 我感谢Jim在实现代码时没有发生。我显示的代码应该按照文件在列表框中的显示顺序打印文件。如果这不是您想要的行为,那么您需要编辑您的问题,并更清楚地解释列表框按顺序包含的内容、文件列表按顺序包含的内容、您期望的输出以及输出的实际内容。如果您遇到错误,请准确地告诉我们错误消息的内容,以及它发生在哪一行。这正是我想要Jim的,但可能是我在实现它时出错了。嘿,Stan,您的代码在运行应用程序的前两次运行正常,但在第三次之后,它会再次随机打印,更重要的是,它开始从下到上打印,至少有一个订单,如果我只是我可以让它永久,不在乎它是从上到下还是从下到上,只要是其中一个并且是永久的
foreach (var item in listBox1.Items)
{
var fname = item.ToString();
if (pdf_files.Contains(fname))
{
Pdf.PrintPDFs(fname);
}
}