0

printPreviewDialogで「1ページ」「2ページ」などのボタンと「ページ」を削除する方法が知りたいです。私はC++ windowsフォームのビジュアルスタジオ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 に答える