oparciu o komentarze, rozumiem, że chcesz do pułapki „Otwórz w nowym oknie” działań na rzecz kontroli WebBrowser i zastąpić domyślne zachowanie, aby otworzyć w nowej karcie wewnątrz aplikacji zamiast.
Aby to osiągnąć niezawodnie, musisz dostać się do zdarzenia NewWindow2, które ujawnia ppDisp (ustawiany wskaźnik do formantu WebBrowser, który powinien otworzyć nowe okno). Wszystkie inne potencjalne zhakowane rozwiązania (takie jak uzyskanie ostatniego linka wybranego przez użytkownika przed zdarzeniem OpenWindow) nie są optymalne i z pewnością zawiodą w przypadku narożników.
Na szczęście istnieje (stosunkowo) prosty sposób na osiągnięcie tego przy jednoczesnym użyciu kontrolki System.Windows.Forms.WebBrowser jako podstawy. Wszystko, co musisz zrobić, to rozszerzenie WebBrowser i przechwycenie zdarzenia NewWindow2 przy jednoczesnym zapewnieniu publicznego dostępu do instancji ActiveX (za przejście do ppDisp w nowych kartach). Zostało to zrobione wcześniej, a Mauricio Rojas ma doskonały przykład z kompletnym robotniczej „ExtendedWebBrowser”:
http://blogs.artinsoft.net/mrojas/archive/2008/09/18/newwindow2-events-in-the-c-webbrowsercontrol.aspx
Gdy masz klasę ExtendedWebBrowser, wszystko co musisz zrobić, to koparki ustawień dla NewWindow2 a punktem ppDisp do przeglądarki w nowej karcie. Oto przykład, że ułożyła:
private void InitializeBrowserEvents(ExtendedWebBrowser SourceBrowser)
{
SourceBrowser.NewWindow2 += new EventHandler<NewWindow2EventArgs>(SourceBrowser_NewWindow2);
}
void SourceBrowser_NewWindow2(object sender, NewWindow2EventArgs e)
{
TabPage NewTabPage = new TabPage()
{
Text = "Loading..."
};
ExtendedWebBrowser NewTabBrowser = new ExtendedWebBrowser()
{
Parent = NewTabPage,
Dock = DockStyle.Fill,
Tag = NewTabPage
};
e.PPDisp = NewTabBrowser.Application;
InitializeBrowserEvents(NewTabBrowser);
Tabs.TabPages.Add(NewTabPage);
Tabs.SelectedTab = NewTabPage;
}
private void Form1_Load(object sender, EventArgs e)
{
InitializeBrowserEvents(InitialTabBrowser);
}
(Zakłada TabControl nazwie „Karty” i zakładka wstępna kontrola zawierający dziecko zadokowany ExtendedWebBrowser nazwie „InitialWebBrowser”)
Nie zapomnij wyrejestrować wydarzeń kiedy wypustki są zamknięte!
Jestem kimś, kto ma problemy z tj. Otwarciem za każdym razem, gdy klikam na link strony internetowej w ciągu moja własna przeglądarka. Próbowałem wszystkie powyższe, ale bez powodzenia, pierwsza odpowiedź Roberta Dodałem ExtendedWebBrowser w trybie projektowania, ale nadal otrzymuję czerwoną linię pod (InitialTabBrowser) na ostatnim wierszu kodu, a ostrzeżenie "InitialTabBroswer nie jest istnieją w obecnym kontekście ". Wszelkie dodatkowe porady/porady byłyby świetne. –