Как я могу предотвратить диалоговое появление Прогресса Печати при выполнении предварительного просмотра

Используйте следующую команду для фиксации его:

yum install openssl-devel

5
задан Bryan 31 August 2009 в 14:37
поделиться

4 ответа

Я ненавижу отвечать на свои собственные вопрос, но решение смотрело мне прямо в лицо.

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

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

К сожалению,

2
ответ дан 18 December 2019 в 13:16
поделиться

Это работает для меня:

Установите контроллер печати вашего документа на StandardPrintController .

static class Program
    {

        static void Main()
        {
            PrintDocument doc = new PrintDocument();
            doc.PrintController = new StandardPrintController();
            doc.PrintPage += new PrintPageEventHandler(doc_PrintPage);

            doc.Print();
        }

        static void doc_PrintPage(object sender, PrintPageEventArgs e)
        {
            e.Graphics.DrawString("xxx", Control.DefaultFont, Brushes.Black, new PointF(e.PageBounds.Width / 2, e.PageBounds.Height / 2));
        }
    }
6
ответ дан 18 December 2019 в 13:16
поделиться

Возможно, вам повезет с PreviewPrintController вместо StandardPrintController.

]
1
ответ дан 18 December 2019 в 13:16
поделиться

Обходной путь - использовать EnumChildWindows API для поиска дескриптора окна, и, если он найден, использовать ShowWindow API с флагом SW_HIDE, чтобы скрыть окно.

Вот пример пример использования FindWindow, если вы знаете заголовок окна:

#region Constants 

private const int SW_HIDE = 0;

private const int SW_SHOWNORMAL = 1;

private const int SW_SHOW = 5;

#endregion Constants

#region APIs

[System.Runtime.InteropServices.DllImport("user32.dll", CharSet=System.Runtime.InteropServices.CharSet.Auto)] 

private static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 

[System.Runtime.InteropServices.DllImport("user32.dll", CharSet=System.Runtime.InteropServices.CharSet.Auto)] 

private static extern bool ShowWindow(IntPtr hwnd, int nCmdShow); 

[System.Runtime.InteropServices.DllImport("user32.dll", CharSet=System.Runtime.InteropServices.CharSet.Auto)] 

private static extern bool EnableWindow(IntPtr hwnd, bool enabled);

#endregion APIs

public static void ShowProgress()

{

IntPtr h = FindWindow(null, "titleofprogresswindow");

ShowWindow(h, SW_SHOW); 

EnableWindow(h, true); 

}

public static void HideProgress()

{

IntPtr h = FindWindow(null, "titleofprogresswindow");

ShowWindow(h, SW_HIDE); 

EnableWindow(h, false); 

}
0
ответ дан 18 December 2019 в 13:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: