как удалить кнопки «одна страница», «две страницы»… «шесть страниц» в printpreviewdialog?

0

Я хочу знать, как удалить кнопки "одна страница", "две страницы" и т.д. и "страница" в printPreviewDialog? Я использую C++ окна форм visual studio 2012. Спасибо

Теги:
winforms
visual-studio-2012
print-preview

1 ответ

0
Лучший ответ

PrintPreviewDialog - это всего лишь шаблонная реализация диалогового окна, использующего PrintPreviewControl. Вы должны реализовать свой собственный диалог, если хотите свой собственный дизайн.

Тем не менее, это может быть запущено в.NET. Эти кнопки являются частными членами класса, поэтому вы не можете получить к ним доступ в своем собственном коде. Поддержка отражения в.NET обеспечивает бэкдор, вы можете попасть в частные поля с BindingFlags :: NonPublic. Сделайте это похожим на это (используя имена по умолчанию):

using namespace System::Reflection;
...
    Form1(void)
    {
        InitializeComponent();
        array<String^>^ names = gcnew array<String^> {"onepageToolStripButton", 
            "twopagesToolStripButton", "threepagesToolStripButton", 
            "fourpagesToolStripButton", "sixpagesToolStripButton",
            "separatorToolStripSeparator1"};
        for (int ix = 0; ix < names->Length; ix++) {
            FieldInfo^ fi = printPreviewDialog1->GetType()->GetField(names[ix], 
                BindingFlags::NonPublic | BindingFlags::Instance);
            ToolStripItem^ item = safe_cast<ToolStripItem^>(fi->GetValue(printPreviewDialog1));
            delete item;
        }
   }

Похоже, что во время выполнения:

Изображение 174551

Ещё вопросы

Сообщество Overcoder
Наверх
Меню