0

私はMain.csとを持っていPdf.csます。私の Main.cs には 3 つのボタンがあり、各ボタンをクリックするたびに Pdf.cs の pdf ファイルのページに移動します。元。ボタン 1 をクリックすると、新しいウィンドウがポップアップし、ページ 1 に PDF ファイルが表示されます。ボタン 2 をクリックすると、新しい PDF ポップアップ ウィンドウ ページ 2 が表示されます。

私の質問は、pdf ファイルが 1 つの pdf ファイルのみを開き、ユーザーがボタンをクリックするたびに選択したページを更新/呼び出す方法はありますか?

サンプル コード Main.cs は次のとおりです。

public Main()
{
    InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
    ThreadStartSOP = new Thread(new ThreadStart(() => ThreadScreen(pageNumber)));
    if(ThreadStartSOP.IsAlive)
    {
        //Update the page
    }
    else
    {
        ThreadStartSOP.SetApartmentState(ApartmentState.STA);
        ThreadStartSOP.Start();
    }
}

private void ThreadScreen(int pageNumber)
{
    Application.Run(new pdf(pageNumber));
}

Pdf.cs

public pdf(int page)
{
    this.axAcroPDF1.src = @"c:\example.pdf";
    this.axAcroPDF1.setCurrentPage(page);
}

public void UpdatePDFPage(int page)
{
    this.axAcroPDF1.setCurrentPage(page); //Not updating..
    //I tried creating delegate, then invoking the method to it 
    //and still no luck in updating the pdf pages..
}
4

1 に答える 1

1

Pdf.cs がフォームなのか、それとも何か他のものなのかわかりません。基本的に、起動したフォームへの参照はありません。winform への参照を使用して、メイン フォームからそのフォームのメソッドを呼び出すことができます。

このような何かがうまくいくはずです

    Pdf pdfReference;

    private void dummyPage2()
    {
        if (pdfReference != null)
        pdfReference.UpdatePDFPage(2);
    }


    private void ThreadScreen(int pageNumber)
    {
        pdfReference = new Pdf(1);
        Application.Run(pdfReference);
    }
于 2016-08-26T23:19:15.677 に答える