i want to know how to delete the buttons "one page", "two pages", etc, and "page" in printPreviewDialog? i use C++ windows forms visual studio 2012. Thanks

有帮助吗?

解决方案

PrintPreviewDialog is just a boilerplate implementation of a dialog that uses the PrintPreviewControl. You are supposed to implement your own dialog if you want your own design.

Nevertheless, this can be messed with in .NET. These buttons are private members of the class so you can't access them in your own code. Reflection support in .NET provides a backdoor, you can get to private fields with BindingFlags::NonPublic. Make that look similar to this (using the default names):

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

Looks like this at runtime:

enter image description here

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top