C# webbrowsercontrol问题,清除缓存不工作?

C# webbrowsercontrol问题,清除缓存不工作?,c#,pdf,webbrowser-control,clear-cache,C#,Pdf,Webbrowser Control,Clear Cache,我正在使用webbrowsercontrol显示本地存储的.pdf。按下按钮时,我希望webbrowser显示一个空白页/无,并且我希望将.pdf移到另一个文件夹。首先,我尝试在移动之前导航到“”,但我的.pdf被另一个进程使用。谷歌告诉我,我可能需要清除浏览器的缓存才能移动它。我使用了这里的代码:我甚至尝试了注释NR2中的替代代码行,但是这些代码都不允许我移动我的.pdf,它仍然被另一个进程使用 我可以/应该做什么来移动文件?我忘了什么吗 在第二个文件中.Move是我得到错误的地方: webB

我正在使用webbrowsercontrol显示本地存储的.pdf。按下按钮时,我希望webbrowser显示一个空白页/无,并且我希望将.pdf移到另一个文件夹。首先,我尝试在移动之前导航到“”,但我的.pdf被另一个进程使用。谷歌告诉我,我可能需要清除浏览器的缓存才能移动它。我使用了这里的代码:我甚至尝试了注释NR2中的替代代码行,但是这些代码都不允许我移动我的.pdf,它仍然被另一个进程使用

我可以/应该做什么来移动文件?我忘了什么吗

在第二个文件中.Move是我得到错误的地方:

webBrowser1.Navigate("");
WebBrowserHelper.ClearCache();
if (calConv != "")
{
    File.Move(forsDir + calConv + ".cal", forsDir + calConv.Replace("ToDo\\", "") + ".cg4");
    File.Move(forsDir + calConv + ".pdf", forsDir + calConv.Replace("ToDo\\", "") + ".pdf");
}

以下是如何在不使用webcontrol的情况下显示PDF,而使用Adobe Reader:

从下载Acrobat SDK

在您的项目中,添加对SDK中两个dll的引用-AxInterop.AcroPDFLib.dll和Interop.AcroPDFLib.dll

在窗体的构造函数中添加Adobe previewer控件:

// Check if the user has Adobe Reader installed, if not you could show a link to Adobe Reader installer
if (Type.GetTypeFromProgID("AcroPDF.PDF") == null)
{
    pnlGetAdobe.Visible = pnlGetAdobe.Enabled = true;
}
else
{
    try
    {
        // Initialize the Adobe control
        axAcroPDF1 = new AxAcroPDF();
        axAcroPDF1.Dock = DockStyle.Fill;
        axAcroPDF1.Enabled = true;
        axAcroPDF1.Location = new Point(0, 25);
        axAcroPDF1.Name = "axAcroPDF1";
        axAcroPDF1.OcxState = (AxHost.State)new ComponentResourceManager(typeof(JasperPdfReport)).GetObject("axAcroPDF1.OcxState");
        axAcroPDF1.Size = new Size(634, 393);
        axAcroPDF1.TabIndex = 1;
        pnlCenter.Controls.Add(axAcroPDF1); // Add it to a container or instead directly to your form with this.Controls.Add(axAcroPDF1)
        axAcroPDF1.BringToFront();
    }
    catch (COMException cex)
    {
        axAcroPDF1.Dispose();
        axAcroPDF1 = null;
        MessageBox.Show(cex.ToString());
    }
    catch (Exception ex)
    {
        axAcroPDF1.Dispose();
        axAcroPDF1 = null;
        MessageBox.Show(ex.ToString());
    }
}
最后将PDF文件加载到控件中:

if (axAcroPDF1 != null && File.Exists(pdfFilename))
{
    axAcroPDF1.setShowToolbar(false);
    axAcroPDF1.setView("FitH");
    axAcroPDF1.setLayoutMode("SinglePage");
    // Load the PDF into the control
    axAcroPDF1.LoadFile(pdfFilename);
    axAcroPDF1.src = pdfFilename;

    // Show it
    axAcroPDF1.Show();
    axAcroPDF1.Refresh();
}

如果你只显示PDF,你可以使用Adobe的预览控件而不是webbrowsercontrol。你能告诉我正确的方向吗?在哪里可以找到这方面的阅读和代码示例?或者我应该用谷歌搜索什么?@Vedran知道了,谢谢你的提示@维德兰:我似乎无法“卸载”pdf,你知道如何卸载吗?移动它后,我希望控件不显示任何内容…我只是引用了Adobe something类型库,将其添加到工具栏,将其添加到我的表单并使用:axAcroPDF1.LoadFile(file);用于将我的文件加载到查看器中。但我似乎无法“卸载”文件。如何做到这一点?您可以始终执行axAcroPDF1.Dispose(),然后在需要加载新PDF时重新初始化它。我不喜欢它的外观。控制消失了,看起来像那样。我通过简单地重新加载file.Move之前pdf文件所在的路径来解决这个问题。这生成了一个空的pdf查看器窗口。请注意,如果未安装Adobe控件,您的应用程序可能会崩溃-这就是我引用SDK dll-s并手动加载控件的原因。如果这不是你的问题-你已经完成了:)