如何让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控件的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")
如果你必须使用网络浏览器控件,那么你可以考虑将图像复制到临时位置,并将浏览器指向临时副本。