Как добавить новую кнопку для PrintPreviewDialog в C #? - PullRequest
1 голос
/ 08 октября 2009

У меня есть программа, в которой я могу переключаться между различными макетами в моем печатном документе (графические рисунки размера a4, a5 или a6 и еще много чего. Печать документа всегда имеет размер a4). Я могу показать этот документ в PrintPreviewDialog, но мне нужно вручную указать в коде, какой макет я хочу видеть.

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

Не беспокойтесь о функции кнопки, я просто хочу получить ее там и подключить к какому-либо методу (который я сам буду кодировать). Ура! * * 1005

Ответы [ 4 ]

2 голосов
/ 08 октября 2009

Ну, думаю, мне удалось это сделать. Вот вдохновение: davidjt52 @ bytes.com

Вот код, который я закончил писать (этот класс вызывается, когда я хочу просмотреть свой документ в другом месте общей программы):

using System.Reflection; //FieldInfo

открытый класс MyPrintPreviewDialog: PrintPreviewDialog { приватный ToolStripButton myTestButton;

public MyPrintPreviewDialog() : base()
{
    Type T = typeof(PrintPreviewDialog);
    FieldInfo fi = T.GetField("toolStrip1", BindingFlags.Instance | 
    BindingFlags.NonPublic);
    ToolStrip toolStrip1 = (ToolStrip)fi.GetValue(this);

    myTestButton = new ToolStripButton();
    myTestButton.ToolTipText = "TEST";
    myTestButton.ImageIndex = 0;
    myTestButton.Click += new EventHandler(Btn_Click);

    Button Btn = new Button();
    toolStrip1.Items.Add(myTestButton);
}

private void Btn_Click(object Sender, EventArgs args)
{
    MessageBox.Show("Button Clicked");
}

}

Спасибо за вашу помощь. :)

Исправление: я знаю Мне удалось это сделать.

1 голос
/ 08 октября 2009

Вы всегда можете сделать свое. Добавьте PrintPreviewControl в форму с помощью любых кнопок, которые вы хотите / нуждаетесь. Затем установите свойство Document в элементе управления так, чтобы оно было любым печатаемым объектом.

Edit> Работает довольно хорошо, кстати. Я сделал это, потому что я добавил некоторые элементы управления Microsoft.Ink в форму (чтобы позволить подписать предварительно просмотренный документ). Затем я просто вызываю ppcDocument.RefreshPreview ();

0 голосов
/ 08 октября 2009

Я снова.

Я видел несколько «сложных» фрагментов кода в Интернете, которые используют PrintPreviewControl. Несколько сотен строк кода или более.

Они также все используют форму. Я не хочу этого Я знаю, что PrintPreviewDialog использует его на каком-то уровне, но я не хочу на самом деле иметь файл формы или писать в теле формы в моем коде.

Нет ли у меня быстрого способа унаследовать PrintPreviewDialog или настроить PrintPreviewControl, который позволяет мне добавлять новую кнопку без использования тела / файла формы?

0 голосов
/ 08 октября 2009

Вы пытались создать новый класс и наследовать от PrintPreviewDialog?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...