visual - Cargue el archivo HTML local en un C#WebBrowser
webbrowser vba (8)
En mi aplicación tengo un elemento WebBrowser.
Me gustaría cargar un archivo local en él.
Tengo algunas preguntas:
- Dónde colocar el archivo HTML (para que también se instale si un usuario ejecuta la instalación)
- cómo hacer referencia al archivo? (por ejemplo, supongo que la carpeta de instalación del usuario no sería siempre la misma)
EDITAR
He agregado el archivo HTML a mi proyecto.
Y lo he configurado para que se copie en la carpeta de salida.
Cuando lo compruebo, está presente cuando se ejecuta: / bin / Debug / Documentation / index.html
Sin embargo, cuando hago lo siguiente, aparece el error "No se puede mostrar la página" en el elemento webbrowser.
Uso el siguiente código para tratar de mostrar el archivo HTML en el navegador web.
webBrowser1.Navigate(@"./Documentation/index.html");
bastante tarde, pero es el primer golpe que encontré de google
En lugar de usar el directorio actual u obtener el ensamblado, solo use la propiedad Application.ExecutablePath
:
//using System.IO;
string applicationDirectory = Path.GetDirectoryName(Application.ExecutablePath);
string myFile = Path.Combine(applicationDirectory, "Sample.html");
webMain.Url = new Uri("file:///" + myFile);
- Colóquelo en la carpeta de instalación de Aplicaciones o en la carpeta de abajo
- Haga referencia en relación con el directorio actual cuando se ejecuta su aplicación.
- En algún lugar, cerca del conjunto que vas a ejecutar.
- Use la reflexión para obtener la ruta a su ensamblado de ejecución, luego haga algo de magia para ubicar su archivo HTML.
Me gusta esto:
var myAssembly = System.Reflection.Assembly.GetEntryAssembly();
var myAssemblyLocation = System.IO.Path.GetDirectoryName(a.Location);
var myHtmlPath = Path.Combine(myAssemblyLocation, "my.html");
- Haga un clic derecho-> propiedades en el archivo en Visual Studio.
- Establezca el directorio Copiar en salida para copiar siempre .
Entonces podrá hacer referencia a sus archivos usando una ruta como @"./my_html.html"
Copiar a directorio de salida colocará el archivo en la misma carpeta que sus dlls binarios cuando se construya el proyecto. Esto funciona con cualquier archivo de contenido, incluso si está en una subcarpeta.
Si usa una subcarpeta, también se copiará en la carpeta bin para que su ruta sea @"./my_subfolder/my_html.html"
Para crear un URI que pueda usar localmente (en lugar de ser servido a través de la web), necesitará usar el protocolo de archivo , utilizando el directorio base de su binario: nota: esto solo funcionará si configura Copy to Ouptut. Directorio como el anterior o la ruta no será correcta.
Esto es lo que necesitas:
string curDir = Directory.GetCurrentDirectory();
this.webBrowser1.Url = new Uri(String.Format("file:///{0}/my_html.html", curDir));
Tendrás que cambiar las variables y los nombres, por supuesto.
Actualización sobre @ghostJago respuesta arriba
para mí funcionaba como las siguientes líneas en VS2017
string curDir = Directory.GetCurrentDirectory();
this.webBrowser1.Navigate(new Uri(String.Format("file:///{0}/my_html.html", curDir)));
Aplicación Windows 10 uwp
.
Prueba esto:
webview.Navigate(new Uri("ms-appx-web:///index.html"));
Lo que funcionó para mí fue
<WebBrowser Source="pack://siteoforigin:,,,/StartPage.html" />
de here . Copié StartPage.html en el mismo directorio de salida que el archivo xaml y lo cargué desde esa ruta relativa.
Tenga en cuenta que el esquema file:///
no funciona en el framework compacto, al menos no funciona con 5.0.
Deberá usar lo siguiente:
string appDir = Path.GetDirectoryName(
Assembly.GetExecutingAssembly().GetName().CodeBase);
webBrowser1.Url = new Uri(Path.Combine(appDir, @"Documentation/index.html"));