¿Cómo puedo evitar que un usuario navegue a ciertos sitios web en un control WebBrowser?

Tengo un simple navegador web integrado en una aplicación que permite a un usuario buscar en Wikipedia, y estoy tratando de evitar que el usuario navegue a otros sitios web fuera de wikipedia (por ejemplo, haciendo clic en un enlace externo de las referencias). En este momento, estoy usando este código simple:

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;
}

Este código funciona, excepto que la página ya está cargada cuando se ejecuta. Si pongo este código en el_Navigating evento para tratar de detener preventivamente al usuarioantes de la página está cargada, falla porque el control del navegador web no actualiza elUrl Propiedad hasta después de que se carga la página.

La razón por la que no me gusta este código es porque la página ya se ha cargado cuando se llama, por lo que cualquier error en esa página (por ejemplo, errores de script, que muestran una ventana emergente) se muestra, aunque la página web no.

He leído fuentes que dicen no usar el control WebBrowser, por varias razones, pero en este caso, la seguridad no es un problema importante. Tampoco tengo que preocuparme de que el usuario final haga algo, ya que esta aplicación es una aplicación interna que tiene, literalmente, solo un usuario, y él no pasará por alto la seguridad.

Deshabilitar todas las demás páginas en la configuración de IE tampoco es una solución, ya que este usuario utiliza IE para otras actividades de navegación, y los sitios de intranet de esta organización también se ejecutan en IE (y esas direcciones cambian, por lo que simplemente sería difícil permitirlas prever).

Respuestas a la pregunta(3)

Su respuesta a la pregunta