まずDirectory.GetFilesをforeachループでの印刷コードを定義してください、あなたが取得するSystem.IO.Path.GetFileName()とそれを組み合わせるすることもできますファイル名のみ。
List<string> fileNames = Directory.GetFiles(_filePath).Select(d => Path.GetFileName(d)).ToList();
その後、GetNDEReportsList(_itemNo);
(パスまたはファイル名だけ?との完全なファイル名)によって返されたものに応じて、既存のコードを使用することができます。印刷コードについては
var files = fileNames.Where(f => elements.Contains(f)).ToList();
、あなたは印刷を支援するためにサードパーティ製のソフトウェアが必要になりますので、それは、のように容易ではなく、各ドキュメントは独自のを持っていなければならないので、すべての設定を決定するために、1つのダイアログのあなたの条件は非常に珍しいですダイアログ(ページ数などが異なる場合があります)。
EDIT(あなたが実際にプロセス使用して動作するように、印刷用の完全なパス名を必要とする):(上記見た後、編集せずに、あなたの質問から)
は基本的に古いコードを使用して、代わりにこれを使用する:
var files = Directory.GetFiles(_filePath).Where(f => elements.Contains(Path.GetFileName(f))).ToList();
そして、あなたのforeachの中で、試してみてください。
foreach (var file in files)
{
Process p = new Process();
p.StartInfo = new ProcessStartInfo()
{
CreateNoWindow = true,
Verb = "print",
FileName = file
};
p.Start();
}
これは、ファイル名、ファイルの完全なパスを使用し確実に、そしてそれは、ファイルが「破損し」ていると言うことはありません。
最後に、あなたが/変更プリンタ名を選択することができるようにしたい、ここではどのようにある:
System.Windows.Forms.PrintDialog pDlg = new System.Windows.Forms.PrintDialog();
pDlg.AllowSomePages = false;
pDlg.ShowHelp = false;
DialogResult result = pDlg.ShowDialog();
// If the result is OK then continue.
if (result == DialogResult.OK)
{
//print your documents here
foreach (var file in files)
{
Process p = new Process();
p.StartInfo = new ProcessStartInfo()
{
CreateNoWindow = true,
Verb = "print",
FileName = file,
Arguments = pDlg.PrinterName
WindowStyle = ProcessWindowStyle.Hidden //optional, if you can't hide the adobe window properly with CreateNoWindow
};
p.Start();
}
}
は、それが働いているあなたに感謝。質問のパート2では、選択したレポートをプリンタに印刷し、印刷ダイアログボックスを1回だけ表示して印刷オプションを設定します。可能であれば親切に助けてください – Hussein
@フセイン私は何かを鞭打ちしようとすることができます、私はこの答えにそれを加えるか、それとも新しい質問を作成していますか? –
可能であれば、質問の第2部分であるため、この回答に追加してください。ありがとうございます。 – Hussein