У меня есть Main.cs
и Pdf.cs
. My Main.cs имеет 3 кнопки, каждый раз, когда вы нажимаете на каждую кнопку, она переходит на страницу PDF-файла в Pdf.cs. Ex. вы нажмете кнопку 1, появится новое окно и отобразит pdf-файл на стр. 1. Если вы нажмете кнопку 2, отобразится новое всплывающее окно pdf 2 и т. д.Winforms, как обновить страницы в формате pdf с помощью нитки
Мой вопрос: есть ли способ, чтобы файл pdf открывал только один 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..
}
Pdf.cs является WinForm. Ваш код такой же, как и мой код. Спасибо, что ответили на него. –
Не уверен, что вы подразумеваете под «ваш код такой же» - обратите внимание, что ссылочный объект - ** pdfReference = new Pdf (1) **; внутри ThreadScreen. а не поток, который у вас есть в вашем коде. – zxed
Привет @zxed, 'Application.Run (pdfReference);' запускает новый поток/окно. Я хочу только один поток/окно. Спасибо за Ваш ответ –