Если диалоговое окно принтера отменено, то не печатать? - PullRequest
1 голос
/ 15 февраля 2011

Если я запускаю этот код и нажимаю «Отмена» в PrintDialog, он все равно печатается.Как узнать, нажата ли кнопка отмены?

PrintDocument document = new PrintDocument();
PrintDialog dialog = new PrintDialog();

dialog.ShowDialog();
document.PrinterSettings = p.PrinterSettings;
document.Print();

Приложение

WebBrowser w = new WebBrowser();
w.ShowPrintDialog(); //.ShowPrintDialog returns a void, how can I deal with this?

Ответы [ 3 ]

7 голосов
/ 15 февраля 2011

Вы можете проверить результат метода ShowDialog:

if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
   //Print
}
3 голосов
/ 15 февраля 2011

ShowDialog возвращает перечисление результатов диалога.Это будет либо ОК, либо Отмена.

PrintDocument document = new PrintDocument();
PrintDialog dialog = new PrintDialog();

if(dialog.ShowDialog() == DialogResult.Ok)
{
    document.PrinterSettings = p.PrinterSettings;
    document.Print();
}
0 голосов
/ 17 июля 2015

Ответы выше верны для System.Windows.Forms.PrintDialog.Однако, если вы не создаете приложение Forms, то PrintDialog, который вы будете использовать, будет System.Windows.Controls.PrintDialog.Здесь ShowDialog возвращает bool?:

var dialog = new System.Windows.Controls.PrintDialog();

if (dialog.ShowDialog() == true)
{
    // Print...
}
...