2015-03-04 3 views
0

У меня есть приложение, которое я создал и это просто приложение для печати. Сначала я заполняю 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)); 
        } 
       } 
      } 
     } 
    } 
} 

ответ

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

тех же ошибки Благодаря Стенли – Shadoree

+0

Эй Стана ваш код работает первые два раза вы запустите приложение, но после того, как в третий раз он случайно снова печатает, и тем более он начинает печать снизу вверх, по крайней мере, есть заказ, если я только могу просто сделать его постоянным, не волнует, начнет ли он сверху вниз или снизу вверх, пока один из них, и является постоянным – Shadoree

0

Простой ответ заключается в изменении порядка следования петель. То есть, изменить цикл для:

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

H, i thanks Джим не был, когда реализовал ваш код. – Shadoree

+0

Код, который я показал, должен печатать файлы в том порядке, в котором они отображаются в списке. Если это не то поведение, которое вы хотите, тогда вам нужно отредактировать свой вопрос и более четко объяснить, что ваш список содержит (по порядку), что ваш список файлов содержит (по порядку), что вы ожидаете от вывода, и что мощность фактически есть. Если вы получаете сообщение об ошибке, сообщите нам * точно, что говорит сообщение об ошибке, и в какой строке это происходит. –

+0

То, что я хочу, Джим, но, возможно, я что-то делаю неправильно с его внедрением. – Shadoree

Смежные вопросы