Отключение кнопки «печать» в диалоговом окне предварительного просмотра .net - PullRequest
5 голосов
/ 22 сентября 2010

Я работаю над приложением C # / .net.Я хочу, чтобы пользователь мог печатать предварительный просмотр, но я не хочу, чтобы пользователь мог печатать из печати прямо из диалогового окна предварительного просмотра.

В диалоговом окне предварительного просмотра есть маленькая кнопка принтера.который отправляет просмотренные страницы прямо на принтер.Вопрос в том, есть ли способ избавиться от / отключить / перехватить нажатие этой кнопки?

Ответы [ 5 ]

12 голосов
/ 18 февраля 2011

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

Для кнопки печати:

(ToolStripButton)((ToolStrip)printPreviewDialog1.Controls[1]).Items[0]

так, чтобы отключить его,

((ToolStripButton)((ToolStrip)printPreviewDialog1.Controls[1]).Items[0]).Enabled = false;
3 голосов
/ 02 мая 2014

Спасибо всем за эту тему. Я просто хотел поделиться другим методом, основанным на ответе Иона Роата выше. Перегрузите базовый класс с помощью пользовательского класса PrintPreviewDialog. Делает для более чистого вида кода JMHO.

class customPrintPreviewDialog : PrintPreviewDialog
{

   public customPrintPreviewDialog() //default constructor
    {
        // over ride the print button default enabled property
       ((ToolStripButton)((ToolStrip)this.Controls[1]).Items[0]).Enabled = false;
    }

   // Add more of your customization here.

}

И код для создания экземпляра ...

 customPrintPreviewDialog objCPPdialog = new customPrintPreviewDialog();
3 голосов
/ 23 сентября 2010

Класс PrintPreviewDialog на самом деле является оберткой вокруг класса PrintPreviewControl и предоставляет кнопки на панели инструментов.Любая форма может содержать PrintPreviewControl, поэтому вам нужно будет разместить PrintPreviewControl в диалоговой форме, которую вы создаете:

public partial class PreviewDialog : Form
{
    public PreviewDialog() {
        this.printPreviewControl1 = new System.Windows.Forms.PrintPreviewControl();
        this.SuspendLayout();
        // 
        // printPreviewControl1
        // 
        this.printPreviewControl1.Dock = System.Windows.Forms.DockStyle.Fill;
        this.printPreviewControl1.Location = new System.Drawing.Point(0, 0);
        this.printPreviewControl1.Name = "printPreviewControl1";
        this.printPreviewControl1.Size = new System.Drawing.Size(292, 273);
        this.printPreviewControl1.TabIndex = 0;
        this.printPreviewControl1.Columns = 1;
        this.printPreviewControl1.Zoom = 1.0;
    }

}

Свойство Columns, для которого в данный момент задано значение 1, представляет собой количество страниц, отображаемыхуправление по горизонтали по экрану.Свойство Zoom устанавливает масштаб страниц, 1.0 - это полная страница;поэтому <1.0 будет уменьшенным изображением, а> 1.0 будет расширенным изображением в элементе управления на странице.То, что вы хотели бы сделать с классом PreviewDialog выше, это добавить к нему System.Windows.Forms.ToolStrip, а затем добавить кнопки для управления масштабированием и страницы в соответствии с упомянутыми свойствами (Columns and Zoom).

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

    private void buttonPrintPreview_Click(object sender, EventArgs e) {
        PreviewDialog dlg = new PreviewDialog();
        dlg.ShowDialog();
        return;
    }

Надеется, что это поможет

1 голос
/ 24 июня 2013

В VB я использую это, использую преобразователь кода в C #:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    CType(PrintPreviewDialog1.Controls(1), ToolStrip).Items(0).Enabled = False

    PrintPreviewDialog1.ShowDialog()

End Sub
0 голосов
/ 10 ноября 2010

this.reportViewer1.ShowPrintButton = False;

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