0

現在 System.Windows.Forms を使用しています。ダイアログの[OK]ボタンをクリックした後、印刷ダイアログを表示し、そのPrinterSettingsをReportPrintDocument.PrinterSettingsに割り当てたいため、ASP.netのカスタムコントロールのPrintDialog 。これが私のコードです:

using (PrintDialog printDialog = new PrintDialog())
                {
                   if (printDialog.ShowDialog() == DialogResult.OK)
                    {
                        ReportPrintDocument rp = new ReportPrintDocument(rvPermit.ServerReport);
                        rp.PrinterSettings = printDialog.PrinterSettings;
                        rp.Print();
                    }
                }

私の問題は、印刷ダイアログが常に Web ブラウザーの背後に表示され、Web ブラウザーを最小化するまで表示されているかどうかわからないことです。

Web フォームの上部に印刷ダイアログを表示する方法を知っていますか? 助けてください。

4

1 に答える 1

1

これが今のところ私の解決策です。(非推奨) 別のものを見つけた場合は、私に共有してください。

  1. 新しいウィンドウ フォームを初期化する Form currentForm = new Form();

  2. フォームを表示 currentForm.Show();

  3. フォームを有効にする currentForm.Activate();

  4. TopMost を true に設定すると、フォームが一番上に表示されます currentForm.TopMost = true;

  5. フォーカスになるように設定します currentForm.Focus()

  6. form.visible = false を設定します currentForm.Visible = false;

  7. 印刷ダイアログの表示を開始します printDialog.ShowDialog(currentForm)

  8. 新しいフォームを閉じる currentForm.Close();

       try
            {
    
              using (PrintDialog printDialog = new PrintDialog())
                {
                    ReportPrintDocument rp = new ReportPrintDocument(rvPermit.ServerReport);
    
                    Form currentForm = new Form();
                    currentForm.Show();
                    currentForm.Activate();
                    currentForm.TopMost = true;
                    currentForm.Focus();
                    currentForm.Visible = false;
    
                if (printDialog.ShowDialog(currentForm) == DialogResult.OK)
                {
                    if (PrintReport != null)
                        PrintReport(this, e);
    
                    rp.PrinterSettings = printDialog.PrinterSettings;
                    rp.Print();
                }
    
                currentForm.Close();
            }
        }
        catch (Exception)
        {
            // Prevent any error while calling the printer dialog
        }
    
于 2014-03-05T17:03:35.020 に答える