Como posso evitar que um usuário navegue para determinados sites em um controle WebBrowser?

Eu tenho um navegador da Web simples, incorporado em um aplicativo que permite que um usuário pesquise na Wikipédia, e estou tentando evitar que o usuário navegue para outros sites fora da wikipedia (por exemplo, clicando em um link externo, as referências). No momento, estou usando este código simples:

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, exceto que a página já está carregada quando é executada. Se eu colocar este código no_Navigating evento para tentar preventivamente parar o usuárioantes a página é carregada, falha porque o controle do navegador da Web não atualizaUrl propriedade até depois que a página é carregada.

O motivo pelo qual não gosto deste código é porque a página já foi carregada quando é chamada, portanto, quaisquer erros nessa página (por exemplo, erros de script, que exibem um pop-up) são exibidos, mesmo que a página da Web não.

Eu li fontes que dizem não usar o controle WebBrowser, por várias razões, mas neste caso, a segurança não é um grande problema. Eu também não preciso me preocupar com o usuário final fazendo algo, já que este aplicativo é um aplicativo interno que tem literalmente apenas um usuário, e ele não vai ignorar a segurança.

Desabilitar todas as outras páginas nas configurações do IE também não é uma solução, pois esse usuário utiliza o IE para outras navegações, e os sites da intranet dessa organização também são executados no IE (e esses endereços mudam, portanto é difícil permitir todos eles antecipar).

questionAnswers(3)

yourAnswerToTheQuestion