programing

C # WebBrowser에서 로컬 HTML 파일로드

shortcode 2021. 1. 18. 08:23
반응형

C # WebBrowser에서 로컬 HTML 파일로드


내 앱에는 WebBrowser 요소가 있습니다.

로컬 파일을로드하고 싶습니다.

질문이 몇 개 있습니다:

  1. HTML 파일을 저장할 위치 (사용자가 설정을 실행하는 경우에도 설치됨)
  2. 파일을 참조하는 방법? (예 : 사용자의 설치 폴더가 항상 같지는 않다고 생각합니다.)

편집하다

내 프로젝트에 HTML 파일을 추가했습니다.

그리고 출력 폴더에 복사되도록 설정했습니다.

내가 확인할 때 실행할 때 존재합니다 : \ bin \ Debug \ Documentation \ index.html

그러나 다음을 수행하면 웹 브라우저 요소에 '페이지를 표시 할 수 없습니다'오류가 발생합니다.

다음 코드를 사용하여 웹 브라우저에서 HTML 파일을 표시하려고합니다.

webBrowser1.Navigate(@".\Documentation\index.html");

  1. DO가 우측 클릭 -> 속성 Visual Studio에서 파일에 있습니다.
  2. 출력 디렉토리복사를 항상 복사로 설정하십시오 .

그러면 다음과 같은 경로를 사용하여 파일을 참조 할 수 있습니다. @".\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"));

  1. 응용 프로그램 설정 폴더 또는 아래의 별도 폴더에 배치하십시오.
  2. 앱이 실행될 때 현재 디렉터리를 기준으로 참조하세요.

  1. 실행하려는 어셈블리 근처 어딘가.
  2. 리플렉션을 사용하여 실행중인 어셈블리에 대한 경로를 얻은 다음 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

반응형