我有一个简单的PrintDialog(下面的代码)。我的应用程序是托盘应用程序,这意味着它没有窗口,只包含托盘图标中的一些简单的右键单击选项。给定文件路径,应用程序将打开一个打印对话框,让用户打印该项目。
我看到以下问题......第一次打印时,对话框弹出顶部,优先于我所有其他打开的程序。在第一个之后,打印对话框总是在我打开的其他所有内容后面打开。例如,我在屏幕上打开了一个Web浏览器,每次打印后,打印对话框都会打开。
PrintDialog pd = new PrintDialog();
if (pd.ShowDialog() == DialogResult.OK)
{
ProcessStartInfo info = new ProcessStartInfo(filename);
info.Arguments = "\"" + pd.PrinterSettings.PrinterName + "\"";
info.CreateNoWindow = true;
info.WindowStyle = ProcessWindowStyle.Hidden;
info.UseShellExecute = true;
info.Verb = "PrintTo";
try { Process.Start(info); }
catch (Exception e) {
// An exception occured while attempting to print
return false;
}
return true;
}
答案 0 :(得分:2)
我能在这篇文章中找到答案: Cannot show print dialog on the top of asp.net web control
在这里留下答案,因为我花了好几天才找到真正有用的东西。希望这对其他人有帮助。
//initialize a new window form
Form currentForm = new Form();
//show the form currentForm.Show();
Activate the form currentForm.Activate();
//Set its TopMost to true, so it will bring the form to the top
currentForm.TopMost = true;
//Set it to be Focus
currentForm.Focus()
//set the form.visible = false
currentForm.Visible = false;
//start to show the print dialog
printDialog.ShowDialog(currentForm)
//close the new form
currentForm.Close();