有什麼方法可以查詢IE插件(Adobe Reader)的狀態嗎?我有一種情況,我們通過嵌入式瀏覽器(基於我的研究的首選模式)向用戶展示許多多頁面報告,該瀏覽器由標籤頁託管。當用戶離開報告時,通常要修改數據,它們會返回到重新初始化的Adobe Reader。這意味着他們的位置已經丟失,並且展開的書籤節點已經崩潰。System.Windows.Forms.WebBrowser控件顯示pdf
下面是一個簡化的代碼片段,我希望能夠充分表達我的問題的性質。
Public partial class ReportView : UserControl
{
private System.Windows.Forms.WebBrowser webBrowser;
private MyNamespace.ReportGenerator reportGen;
private String currentPDFtempPath;
public ReportView()
{
InitializeComponent();
this.Leave += (o, e) => { /*how can I save current place in pdf?*/ };
this.Enter += (o, e) => { /*return user last place in large pdf*/ };
}
public void ViewReport(string reportName)
{
currentPDFtempPath = reportGen.GetReport(reportName);
webBrowser.Navigate(currentPDFtempPath);
}
private void RefreshReport()
{
webBrowser.Navigate(currentPDFtempPath); /*reinitializes Adobe Reader*/
}
}
public class ReportController
{
private DataModel model;
private ReportView view;
ReportController(DataModel m, ReportView v)
{
this.model = m;
this.view = v;
model.Changed += (o, e) => { view.RefreshReport(); }
}
}
很難看到這段代碼的重點。只需刪除Enter事件處理程序。 –
當對模型數據進行更改時,需要重新生成報告。真正的代碼通過控制器來處理它,但我認爲這是表達我試圖完成的內容的最簡潔的方式。 –
只需調用ViewReport以顯示另一個報告。 Enter事件不會修改模型數據,所以應該* not *重新生成報告。 –