我有一个简单的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;
}
我在这篇文章中找到了答案:无法在asp.net web控件的顶部显示打印对话框
把答案留在这里,因为我花了好几天的时间才找到真正有效的东西。希望这能对其他人有所帮助。
//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();