2013-10-06 7 views

ответ

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; 
     } 
    } 

выглядит следующим образом во время выполнения:

enter image description here