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

.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 回答