Реализовать диалог печати в моем коде

Я пытался решить это сам, но я еще не понял. Я хочу открыть диалоговое окно печати при нажатии кнопки btn_print. Я назвал одну строку, которая, как я полагаю, больше не нужна, так как она определяет размер печатной страницы.

Может ли кто-нибудь посмотреть на мой код и сказать мне, что я могу сделать?

private void btn_print_Click(object sender, RoutedEventArgs e)
    {
        try
        {
            PrintDocument pd = new PrintDocument();
            //pd.DefaultPageSettings.PaperSize = new PaperSize("A4", 827, 1169);
            pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);
            pd.Print();
        }
        catch (Exception ex)
        {
            MessageBox.Show("An error occurred while printing", ex.ToString());
        }
    }

    private void pd_PrintPage(object sender, PrintPageEventArgs e)
    {

    }

person Thomas Eikje Gjerde    schedule 29.03.2016    source источник
comment
ну что не работает?   -  person rory.ap    schedule 29.03.2016
comment
msdn.microsoft.com /en-us/библиотека/   -  person Tdorno    schedule 29.03.2016
comment
@roryap работает, но это просто печать на принтере по умолчанию без открытия диалогового окна печати. Я хочу добавить эту функцию в этот код.   -  person Thomas Eikje Gjerde    schedule 29.03.2016
comment
Вы пробовали погуглить? Это слишком широкий вопрос для этого сайта.   -  person rory.ap    schedule 29.03.2016
comment
@roryap, да, я пробовал, и я безуспешно пытался использовать класс PrintDialog. Я думаю, что попробую еще и постараюсь прийти с кодом, который будет работать!   -  person Thomas Eikje Gjerde    schedule 29.03.2016


Ответы (1)


Попробуйте что-то вроде этого:

PrintDocument pd = new PrintDocument();
//pd.DefaultPageSettings.PaperSize = new PaperSize("A4", 827, 1169);
pd.PrintPage += new PrintPageEventHandler(this.pd_PrintPage);

System.Windows.Forms.PrintDialog p = new System.Windows.Forms.PrintDialog();
p.Document = pd;
if (p.ShowDialog() == System.Windows.Forms.DialogResult.OK)
    pd.Print();
person J.H.    schedule 29.03.2016
comment
Это не сработало @J.H. . Пространство имен System.Windows.Forms не существует и, вероятно, принадлежит Windows Forms? Я удалил пространство имен в коде и получаю сообщение об ошибке, что printdialog не содержит определения для документа и 'bool?' не содержит определения для OK. - person Thomas Eikje Gjerde; 29.03.2016
comment
Добавьте ссылку на System.Windows.Forms и все заработает. - person J.H.; 29.03.2016
comment
Это точно! Я думаю, что мне не хватало этой ссылки, когда я пробовал другие вещи. Большое спасибо @J.H.! - person Thomas Eikje Gjerde; 29.03.2016