Jak mogę uniemożliwić użytkownikowi przeglądanie określonych witryn w formancie WebBrowser?

Mam prostą przeglądarkę internetową wbudowaną w aplikację, która pozwala użytkownikowi na przeszukiwanie Wikipedii i próbuję uniemożliwić użytkownikowi przeglądanie innych stron poza wikipedią (np. Klikając link zewnętrzny odnośniki). W tej chwili używam tego prostego kodu:

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

Ten kod działa, ale strona jest już załadowana, gdy jest uruchomiona. Jeśli umieścisz ten kod w_Navigating wydarzenie, aby próbować zatrzymać użytkownikaprzed strona jest załadowana, nie powiedzie się, ponieważ kontrolka przeglądarki internetowej nie aktualizujeUrl właściwość do momentu załadowania strony.

Powodem, dla którego nie podoba mi się ten kod, jest to, że strona jest już załadowana, gdy jest wywoływana, więc wyświetlane są wszystkie błędy na tej stronie (np. Błędy skryptu, które wyświetlają popup), nawet jeśli strona nie działa.

Czytałem źródła, które mówią, że nie używają formantu WebBrowser z różnych powodów, ale w tym przypadku bezpieczeństwo nie jest poważnym problemem. Nie muszę też martwić się, że użytkownik końcowy coś zrobi, ponieważ ta aplikacja jest wewnętrzną aplikacją, która ma dosłownie tylko jednego użytkownika i nie obejdzie zabezpieczeń.

Wyłączenie wszystkich innych stron w ustawieniach IE też nie jest rozwiązaniem, ponieważ ten użytkownik korzysta z IE do innych przeglądarek, a strony intranetowe tej organizacji działają również na IE (i te adresy się zmieniają, więc po prostu zezwolenie na wszystkie z nich byłoby trudne przewidywać).

questionAnswers(3)

yourAnswerToTheQuestion