Dans mon application, j'ai un élément WebBrowser.
Je voudrais charger un fichier local dedans.
J'ai quelques questions:
MODIFIER
J'ai ajouté le fichier HTML à mon projet.
Et je l'ai configuré pour qu'il soit copié dans le dossier de sortie.
Quand je le vérifie, il est présent à l'exécution:\bin\Debug\Documentation\index.html
Cependant, lorsque je fais ce qui suit, je reçois une erreur «La page ne peut pas être affichée» dans l'élément navigateur Web.
J'utilise le code suivant pour essayer d'afficher le fichier HTML dans le navigateur Web.
webBrowser1.Navigate(@".\Documentation\index.html");
Ensuite, vous pourrez référencer vos fichiers en utilisant un chemin tel que @".\my_html.html"
Copier dans le répertoire de sortie placera le fichier dans le même dossier que vos dll binaires lors de la construction du projet. Cela fonctionne avec n'importe quel fichier de contenu, même s'il se trouve dans un sous-dossier.
Si vous utilisez un sous-dossier, celui-ci sera également copié dans le dossier bin afin que votre chemin soit alors @".\my_subfolder\my_html.html"
Pour créer un URI que vous pouvez utiliser localement (au lieu de serveur via le Web), vous devez utiliser le protocole file, en utilisant le répertoire de base de votre binaire - note: cela ne fonctionnera que si vous définissez Copier dans le répertoire Ouptut comme ci-dessus ou le chemin ne sera pas correct.
Voici ce dont vous avez besoin:
string curDir = Directory.GetCurrentDirectory();
this.webBrowser1.Url = new Uri(String.Format("file:///{0}/my_html.html", curDir));
Vous devrez bien sûr changer les variables et les noms.
assez tard, mais c'est le premier coup que j'ai trouvé de google
Au lieu d'utiliser le répertoire en cours ou d'obtenir l'assembly, utilisez simplement la propriété Application.ExecutablePath
:
//using System.IO;
string applicationDirectory = Path.GetDirectoryName(Application.ExecutablePath);
string myFile = Path.Combine(applicationDirectory, "Sample.html");
webMain.Url = new Uri("file:///" + myFile);
Notez que le schéma file:///
ne fonctionne pas sur le framework compact, du moins pas avec la version 5.0.
Vous devrez utiliser les éléments suivants:
string appDir = Path.GetDirectoryName(
Assembly.GetExecutingAssembly().GetName().CodeBase);
webBrowser1.Url = new Uri(Path.Combine(appDir, @"Documentation\index.html"));
Comme ça:
var myAssembly = System.Reflection.Assembly.GetEntryAssembly();
var myAssemblyLocation = System.IO.Path.GetDirectoryName(a.Location);
var myHtmlPath = Path.Combine(myAssemblyLocation, "my.html");
Mise à jour sur la réponse de @ghostJago ci-dessus
pour moi, cela a fonctionné comme les lignes suivantes dans VS2017
string curDir = Directory.GetCurrentDirectory();
this.webBrowser1.Navigate(new Uri(String.Format("file:///{0}/my_html.html", curDir)));
Windows 10 uwp
application.
Essaye ça:
webview.Navigate(new Uri("ms-appx-web:///index.html"));
Ce qui a fonctionné pour moi était
<WebBrowser Source="pack://siteoforigin:,,,/StartPage.html" />
de ici . J'ai copié StartPage.html dans le même répertoire de sortie que le fichier xaml et il l'a chargé à partir de ce chemin relatif.