PrintDialog显示在所有打开的窗口后面

时间:2017-10-16 17:31:28

标签: c# winforms printdialog

我有一个简单的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;
}

1 个答案:

答案 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();