2012-03-06 2 views
2

WebBrowser 컨트롤을 사용하여 로컬 하드 드라이브의 .jpg 파일을 볼 때 .Net 4 (VS 2010) WinForms 응용 프로그램이 있습니다. 파일을 엽니 다.jpg 파일을 닫으려면 WebBrowser 컨트롤을 얻는 방법?

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

나는 사용자가 파일을보고 나서 다른 폴더로 이동하려면이 버튼을 클릭해야합니다.

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

WebBrowser 컨트롤에 여전히 파일이 열려 있기 때문에 IOException이 발생합니다.

Navigate ("about : blank")를 호출 해 보았습니다. WebBrowser 컨트롤을 삭제하려고 시도했지만 아무 것도 작동하지 않았습니다. WebBrowser 컨트롤에서 jpg 파일을 닫을 수있는 좋은 방법은 무엇입니까?

다른 해결 방법이 발견되지 않으면 jpg를 임시 폴더에 복사하여보기 위해 사용하게되므로 필요에 따라 원본을 이동할 수 있습니다.

+0

테스트 프로젝트를 만들었고 정확히 말했던 것처럼 작동했습니다. 어쩌면 다른 것이 있을까요? – ionden

+0

하나의 약간의 차이점은 제작 코드에서 매핑 된 네트워크 드라이브에서 파일을로드 할 때 (그리고 같은 드라이브의 다른 폴더로 이동하는 경우)입니다. 나는 그것이 행동에 어떤 차이를 일으킬 것이라고 생각하지 않을 것이다. –

답변

1

당신은 웹 브라우저 컨트롤에 연결되지 않은 경우에 당신은 대신 PictureBox를 사용할 수 있습니다

드롭 폼 이름에 PictureBox를 그것을 PictureView

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

웹 브라우저 컨트롤을 사용해야하는 경우 임시 위치에 이미지 복사본을 만들고 브라우저에서 임시 복사본을 가리키는 것을 고려할 수 있습니다.

+1

WebBrowser 컨트롤에 묶여 있습니다. 나는 또한 그것을 사용하여 pdf 파일을 봅니다 (꽤 멋지게 WebBrowser 내에서 Adobe Reader를로드합니다). –

+0

잘 그때 theres 임시 위치 거래. 임시 위치가 당신을 위해 작동하지 않는 경우에 그것을 다룰 다른 방법이 있습니다. –

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()에 호출을 추가 한 후 문제가 해결되었습니다.

나를 도와 주신 분들께 감사드립니다.

관련 문제