Laden...

WebBrowser.DocumentText übernimmt Daten nicht

Erstellt von MoaByter vor 2 Jahren Letzter Beitrag vor 2 Jahren 419 Views
M
MoaByter Themenstarter:in
68 Beiträge seit 2016
vor 2 Jahren
WebBrowser.DocumentText übernimmt Daten nicht

Hallo,

mit dem WebBrowser-Tool habe ich ein merkwürdiges Problem:
Ich fülle mit meinem Programm ein List<string>-Element mit HTML-Text, das ich zum Schluss als String mit dem Befehl


wb.DocumentText = string.Join(rn, l_htm);   // rn = Zeilenumbruch, Environment.NewLine

in dem WebBrowser anzeigen lassen möchte. Bisher funktionierte das auch problemlos, jetzt geht's auf einmal nicht mehr, WebBrowser.DokumentText zeigt nur einen Leerstring. Wenn ich es Schritt für Schritt durchfahre, stelle ich fest, dass das Programm die Navigation - OnNavigating(...) - mit WebBrowserNavigatingEventArgs.Url = "about:blank" aufruft, dann zurückkehrt ... und das BrwoserDokument bleibt leer.
Ich hatte das früher schon mal und es mit einem nachfolgenden


Thread.Sleep(100);

lösen können, später war letzteres nicht mehr nötig, funktionierte auch so - warum auch immer. Jetzt aber hilft gar nichts mehr. Woran könnte das liegen?
Den Aufruf des Navigating-Events hatte ich, als der Browser noch funktierte, nicht überprüft, warum auch? Es ging ja alles.
Der HTML-Text ist einwandfrei - nur Text, kein Script o.ä. Weiß jemand Rat?

Ein Screenshot anbei.
VG - ...MoaByter

M
MoaByter Themenstarter:in
68 Beiträge seit 2016
vor 2 Jahren

Ähm ... da fehlen ein paar infos:
ich arbeite mit Windows 10, nutze VisualStudioCommunity2017. Ich verwende in meinem Programm mehrere Browser, insgesamt 5 Stück.
Nur bei den 3 Browsern mit eingeschalteter Navigation tritt der Fehler auf, vor ein paar Stunden noch funktionierte es trotzdem.
Wenn ich jetzt auf


AllowNavigation = false;

stelle, ändert das nichts. Ich weiß mir einfach keinen Rat mehr. Es ist, als würde b...

Aha - Fehler vielleicht gefunden, ich änderte die Position des "e.Cancel=true;" im Navi-Event:
Vorher:


private void OnWbNavigating(object sender, WebBrowserNavigatingEventArgs e)
{
	string lnk = e.Url + ";
	e.Cancel = true;
	if (lnk.StartsWith("about:")) return;
	...
}

Nachher:


private void OnWbNavigating(object sender, WebBrowserNavigatingEventArgs e)
{
	string lnk = e.Url + ";
	if (lnk.StartsWith("about:")) return;

	e.Cancel = rue;
	...
}

Mich wundert es etwas, denn ganz vorher stand das "e.Cancel=true;" als


if (link.Contains("about:blank")) e.Cancel = true;

innerhalb des jetzt noch vorhandenen if-Elements. Das müsste das Programm ja nach dem WebBrowser.DocumentText = "xyz" auch durchlaufen haben.
Vielleicht hat jemand einen Tipp dazu? Das wäre sehr nett, Danke!

VG - ...MoaByter

16.834 Beiträge seit 2008
vor 2 Jahren

Ich denke, dass Du mit WebBrowser-Tool die WebBrowser-Klasse meinst.
Diese ist seit 100 Jahren veraltet und seit bestimmt 10 Jahren ist bekannt, dass das Ding nicht mehr verwendet werden soll.
Alternativen: Einführung in Microsoft Edge WebView2 - Microsoft Edge Development

M
MoaByter Themenstarter:in
68 Beiträge seit 2016
vor 2 Jahren

Danke für deine Antwort, meine kommt etwas spät, hatte viel anderes zu tun, Scusi.

Ich habe die Seiten über WebView2 mal angesehen, blicke aber noch gar nicht durch. Ich habe das Nuget-Paket zwar installiert, aber wie der WebBrowser lässt's sich nicht einbinden; bei den Tools taucht's jedenfalls nicht auf. Ich werd' mal weiter lesen, vielleicht kommt mir ja noch die Erleuchtung.
Ich bin mir auch nicht sicher, ob der Aufwand lohnt, denn der WebBrowser isz nur zum Anzeigen interner Daten(listen) zuständig, er soll nicht ins Web.

Ja, WebBrowser-Klasse. Steht unter "Tools" und ist somit für mich eben auch ein Tool.