Wie kann ich verhindern, dass ein Benutzer in einem WebBrowser-Steuerelement zu bestimmten Websites navigiert?

Ich habe einen einfachen Webbrowser, der in eine Anwendung eingebettet ist, mit der ein Benutzer Wikipedia durchsuchen kann, und ich versuche zu verhindern, dass der Benutzer zu anderen Websites außerhalb von Wikipedia navigiert (z. B. durch Klicken auf einen externen Link auf die Verweise). Im Moment benutze ich diesen einfachen Code:

this.textBoxAddress.Text = this.webBrowser.Url.ToString();
if (this.webBrowser.Url.Host != "en.wikipedia.org")
{
    this.webBrowser.Visible = false;
    this.labelErrorMessage.Visible = true;
}
else
{
    this.webBrowser.Visible = true;
    this.labelErrorMessage.Visible = false;
}

Dieser Code funktioniert, außer dass die Seite bereits geladen ist, wenn sie ausgeführt wird. Wenn ich diesen Code in das_Navigating Ereignis, um zu versuchen, den Benutzer präventiv zu stoppenVor Wenn die Seite geladen wird, schlägt dies fehl, da das Webbrowser-Steuerelement die Seite nicht aktualisiertUrl Eigenschaft bis nach dem Laden der Seite.

Der Grund, warum mir dieser Code nicht gefällt, ist, dass die Seite beim Aufruf bereits geladen wurde, sodass alle Fehler auf dieser Seite (z. B. Skriptfehler, die ein Popup anzeigen) angezeigt werden, obwohl die Webseite dies nicht tut.

Ich habe Quellen gelesen, in denen aus verschiedenen Gründen darauf hingewiesen wird, das WebBrowser-Steuerelement nicht zu verwenden. In diesem Fall ist die Sicherheit jedoch kein großes Problem. Ich muss mich auch nicht darum kümmern, dass der Endbenutzer etwas unternimmt, da es sich bei dieser Anwendung um eine interne Anwendung handelt, die buchstäblich nur einen Benutzer hat und die Sicherheit nicht umgeht.

Das Deaktivieren aller anderen Seiten in den IE-Einstellungen ist ebenfalls keine Lösung, da dieser Benutzer den IE für andere Surfvorgänge verwendet und die Intranetsites dieser Organisation auch im IE ausgeführt werden (und diese Adressen sich ändern, sodass es schwierig wäre, alle zuzulassen erwarten).

Antworten auf die Frage(3)

Ihre Antwort auf die Frage