如何让WebBrowser控件关闭jpg文件

本文关键字:jpg 文件 控件 WebBrowser | 更新日期: 2023-09-27 18:26:50

我有一个.Net 4(VS 2010)WinForms应用程序,我正在使用WebBrowser控件查看本地硬盘上的.jpg文件。我通过调用打开文件

this.webBrowser1.Navigate("c:'Folder1'myfile.jpg");

然后我有一个按钮,用户可以在查看后点击将文件移动到另一个文件夹。

File.Move("c:'Folder1'myfile.jpg","c:'Folder2'myfile.jpg");

这会引发IOException,因为WebBrowser控件仍打开该文件。

我试过调用Navigate("about:black"),我试过处理WebBrowser控件等,但都不起作用。让WebBrowser控件关闭jpg文件的好方法是什么?

如果找不到其他解决方案,我将被迫将jpg复制到一个临时文件夹中并使用它进行查看,这样我就可以根据需要移动原件。

如何让WebBrowser控件关闭jpg文件

好吧,我在代码的另一部分发现了一个错误。我在WebBrowser控件的Navigated和Resize事件中调用了这个方法,以缩放控件,使图像适合控件的宽度。

private void SetBrowserZoom()
    {
        if (CurrentSelectedFilePath.ToLower().EndsWith(".jpg"))
        {
            var bitMap = new System.Drawing.Bitmap(CurrentSelectedFilePath);
            decimal imageWidth = bitMap.Width;
            decimal browserWidth = WebBrowser.Width - 40;
            decimal zoomFactor = decimal.Round((browserWidth / imageWidth) * 100, 0);
            WebBrowser.Document.Images[0].Style = "zoom: " + zoomFactor.ToString() + "%";
            bitMap.Dispose();
        }
    }

我没有对位图调用Dispose(),这就是保持文件打开的原因。在我添加了对bitMap.Dispose()的调用后,问题就消失了。

感谢那些花时间帮助我的人。

如果你没有绑定到web浏览器控件,那么你可以使用picturebox来代替:

在表单上放置一个图片框,并将其命名为PictureView

PictureView.Image = Bitmap.FromFile("path to the image")

如果你必须使用网络浏览器控件,那么你可以考虑将图像复制到临时位置,并将浏览器指向临时副本。