0

我想知道如何删除 printPreviewDialog 中的“一页”、“两页”等和“页面”按钮?我使用 C++ windows forms visual studio 2012。谢谢

4

1 回答 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;
        }
   }

在运行时看起来像这样:

在此处输入图像描述

于 2013-10-06T18:23:44.093 回答