我有一个.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:blank”),我尝试过Disposing WebBrowser控件等,但没有任何效果。什么是让WebBrowser控件关闭jpg文件的好方法?
如果没有找到其他解决方案,我将被迫将jpg复制到临时文件夹并使用它进行查看,以便我可以根据需要移动原件。
答案 0 :(得分:2)
好的,我在代码的另一部分发现了一个错误。我有这个方法,我在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()后,问题就消失了。
感谢那些花时间帮助我的人。
答案 1 :(得分:1)
如果您不依赖于网络浏览器控件,那么您可以改为使用图片框:
在表单上放置一个PictureBox并将其命名为PictureView
PictureView.Image = Bitmap.FromFile("path to the image")
击> <击> 撞击>
如果您必须使用webbrowser控件,那么您可以考虑将图像副本复制到临时位置并将浏览器指向临时副本。