C # WebBrowser에서 로컬 HTML 파일로드
내 앱에는 WebBrowser 요소가 있습니다.
로컬 파일을로드하고 싶습니다.
질문이 몇 개 있습니다:
- HTML 파일을 저장할 위치 (사용자가 설정을 실행하는 경우에도 설치됨)
- 파일을 참조하는 방법? (예 : 사용자의 설치 폴더가 항상 같지는 않다고 생각합니다.)
편집하다
내 프로젝트에 HTML 파일을 추가했습니다.
그리고 출력 폴더에 복사되도록 설정했습니다.
내가 확인할 때 실행할 때 존재합니다 : \ bin \ Debug \ Documentation \ index.html
그러나 다음을 수행하면 웹 브라우저 요소에 '페이지를 표시 할 수 없습니다'오류가 발생합니다.
다음 코드를 사용하여 웹 브라우저에서 HTML 파일을 표시하려고합니다.
webBrowser1.Navigate(@".\Documentation\index.html");
- DO가 우측 클릭 -> 속성 Visual Studio에서 파일에 있습니다.
- 출력 디렉토리 에 복사를 항상 복사로 설정하십시오 .
그러면 다음과 같은 경로를 사용하여 파일을 참조 할 수 있습니다. @".\my_html.html"
출력 디렉토리에 복사하면 프로젝트가 빌드 될 때 바이너리 dll과 동일한 폴더에 파일이 저장됩니다. 이것은 하위 폴더에 있더라도 모든 콘텐츠 파일에서 작동합니다.
하위 폴더를 사용하는 경우 해당 폴더도 bin 폴더에 복사되므로 경로가 @".\my_subfolder\my_html.html"
URI를 만들려면 (웹을 통해 서버되는 대신) 로컬에서 사용할 수 있으며 바이너리의 기본 디렉토리 를 사용하여 파일 프로토콜 을 사용해야합니다 . 참고 : 복사를 Ouptut으로 설정 한 경우에만 작동합니다. 위와 같은 디렉토리 또는 경로가 올바르지 않습니다.
이것이 필요한 것입니다.
string curDir = Directory.GetCurrentDirectory();
this.webBrowser1.Url = new Uri(String.Format("file:///{0}/my_html.html", curDir));
물론 변수와 이름을 변경해야합니다.
꽤 늦었지만 Google에서 찾은 첫 번째 히트 곡입니다.
현재 디렉터리를 사용하거나 어셈블리를 가져 오는 대신 다음 Application.ExecutablePath
속성을 사용하십시오 .
//using System.IO;
string applicationDirectory = Path.GetDirectoryName(Application.ExecutablePath);
string myFile = Path.Combine(applicationDirectory, "Sample.html");
webMain.Url = new Uri("file:///" + myFile);
이 file:///
체계는 컴팩트 프레임 워크에서 작동하지 않으며 적어도 5.0에서는 작동하지 않습니다.
다음을 사용해야합니다.
string appDir = Path.GetDirectoryName(
Assembly.GetExecutingAssembly().GetName().CodeBase);
webBrowser1.Url = new Uri(Path.Combine(appDir, @"Documentation\index.html"));
- 응용 프로그램 설정 폴더 또는 아래의 별도 폴더에 배치하십시오.
- 앱이 실행될 때 현재 디렉터리를 기준으로 참조하세요.
- 실행하려는 어셈블리 근처 어딘가.
- 리플렉션을 사용하여 실행중인 어셈블리에 대한 경로를 얻은 다음 HTML 파일을 찾기 위해 약간의 마법을 수행하십시오.
이렇게 :
var myAssembly = System.Reflection.Assembly.GetEntryAssembly();
var myAssemblyLocation = System.IO.Path.GetDirectoryName(a.Location);
var myHtmlPath = Path.Combine(myAssemblyLocation, "my.html");
위의 @ghostJago 답변에 대한 업데이트
나를 위해 그것은 다음 줄로 작동했습니다. VS2017
string curDir = Directory.GetCurrentDirectory();
this.webBrowser1.Navigate(new Uri(String.Format("file:///{0}/my_html.html", curDir)));
나를 위해 일한 것은
<WebBrowser Source="pack://siteoforigin:,,,/StartPage.html" />
에서 여기 . StartPage.html을 xaml 파일과 동일한 출력 디렉토리에 복사하고 해당 상대 경로에서로드했습니다.
Windows 10 uwp
애플리케이션.
이 시도:
webview.Navigate(new Uri("ms-appx-web:///index.html"));
참조 URL : https://stackoverflow.com/questions/7194851/load-local-html-file-in-ac-sharp-webbrowser
'programing' 카테고리의 다른 글
제거하는 가장 쉬운 방법은 무엇입니까 (0) | 2021.01.18 |
---|---|
오버플로 텍스트를 중앙에 배치 할 수 있습니까? (0) | 2021.01.18 |
HTML 입력 태그의 글꼴 및 글꼴 크기를 변경하는 방법은 무엇입니까? (0) | 2021.01.18 |
Python 스크립트를 다른 스크립트로 가져 오시겠습니까? (0) | 2021.01.18 |
새 연결을 생성하지 않고 몽구스 연결 상태 확인 (0) | 2021.01.18 |