2

ウィンドウに以下のコードがあります。

private void helpToolStripMenuItem_Click(object sender, EventArgs e)
{
    Help helpWindow=new Help();
    helpWindow.MdiParent = this;
    helpWindow.BringToFront();
    helpWindow.Show();        
}

ウィンドウのコードは次のとおりです。

public Help()
{
    InitializeComponent();
    axAcroPDF1.LoadFile(@"D:\sample.pdf");
}

上記のコードを使用すると、子ウィンドウで pdf を表示できませんでした。しかし、親ウィンドウから以下のコードを削除するとhelpWindow.MdiParent = this; 、pdf を表示できますが、私の要件ではない別のウィンドウで開いています。

4

3 に答える 3

0

私の最後の回答のフォローアップですが、このソリューションが機能するために重要なことが2つあります。

  1. フォームに使用されているpdfフォームは、次のように追加する必要があります。

    TopLevel = false;
    
  2. pdfPDF ファイルが acrobat コントロールにロードされる前に、フォームのロードが完了する必要があります。そのため、子フォームがまだロードされておらず、1 つのステップでロードされている場合、ファイルをロードするためのコードが form_shown イベントである場合にのみ機能します。以下は、上記のソリューションのより良い実装を示しています。

    private string _pdfFileName = "";
    public string PDFFileName { set { _pdfFileName = value; } }
    
    private void frmPDF_Shown(object sender, EventArgs e)
    {
        axAcroPDF1.LoadFile(_pdfFileName);
    }
    

次に示すように、パブリック プロパティを使用してファイル名を設定する必要があります。

 pdfForm.PDFFileName=pdfFile;
于 2018-01-15T00:18:55.723 に答える
0

同じ問題を解決しようとしていたので、あなたの問題の解決策を見つけました。トリックは、acrobat ビューアで pdf ファイルを表示するための特別なフォームを作成し、そのフォームを MDI 子フォームに追加することです。次に、選択したpdfファイルを表示したい場合は、ファイル名を子フォームに渡し、そのファイル名を子フォームに追加されたフォームに渡します。したがって、子フォームで以下のように pdf フォームのクラス レベル変数を宣言します。

    frmPDF pdfForm = new frmPDF();

以下のように pdf ファイルの名前を受け入れるメソッドを子に作成し、同時に pdf フォームのインスタンスを作成して mdi 子フォームに追加します。

    public void LoadPDF(string fileName)
    {
        pdfForm.TopLevel = false;
        pdfForm.Parent = this;
        pdfForm.FormBorderStyle = FormBorderStyle.None;
        pdfForm.Dock = DockStyle.Fill;
        pdfForm.Show();
        pdfForm.LoadPDF(fileName);
    }

次に、pdf フォームで、フォームが表示された後に呼び出される次のメソッドを作成します。

    public void LoadPDF(string fileName)
    {
        axAcroPDF1.LoadFile(@fileName);
    }

これにより、発生していた問題が解決され、ヘルプ ファイルを子ウィンドウに表示できるようになります。

お役に立てれば:-)

于 2018-01-14T23:11:26.277 に答える