Hallo,
Ich möchte gerade einen „Multitab-Webbrowser“ in C#
programmieren! Nur mit den Tabs gibt es ein Problem:
Wie frage ich den Aktuellen Webbrowser ab, damit das
Programm weiss, wo es die Seite öffnen soll?
Hallo,
in Winforms oder WPF? Ist nicht der Reiter aktiv (selected) auf welchem der User sich gerade befindet? Dadurch weißt du ja, welcher aktiv ist, oder?
Gruß
Tom
Wenn du WPF verwendest, kannst du so den Browser abfragen:
using System;
using System.Windows.Controls;
using System.Windows.Browser;
public class Example
{
public static void Demo(System.Windows.Controls.TextBlock outputBlock)
{
outputBlock.Text +=
„\nSilverlight can provide browser information:\n“ +
"\nBrowser Name = " + HtmlPage.BrowserInformation.Name +
"\nBrowser Version = " + HtmlPage.BrowserInformation.BrowserVersion.ToString() +
"\nUserAgent = " + HtmlPage.BrowserInformation.UserAgent +
"\nPlatform = " + HtmlPage.BrowserInformation.Platform +
"\nCookiesEnabled = " + HtmlPage.BrowserInformation.CookiesEnabled.ToString() +
"\nProductName = " + HtmlPage.BrowserInformation.ProductName.ToString() +
"\nProductVersion = " + HtmlPage.BrowserInformation.ProductVersion.ToString();
}
}
Ich weiss aber nicht, ob deine Frage überhaupt sinnvoll ist, denn wenn du einen eigenen Browser schreiben willst, dann verwendest du nicht einen installierten Browser sondern sinnvollerweise das Control System.Windows.Controls.Webbrowser auf deinen Tabs. Ein eigenes Browser Control zu schreiben dürfte deine Lebenszeit nicht reichen
ich finde die Frage etwas unverständlich. Willst Du ein Fenster haben, das oben Tabs hat und unten einen "Haupt-"Bereich, in dem die Webseite dargestellt wird? In diesem Fall brauchst du nicht den Standardbrowser (ich vermute, das ist mit „aktueller Browser“ gemeint) sondern eine Rendering-Engine. Eine solche ist z.B. in .net in Form des WebBrowser-Steuerelementes enthalten (http://msdn.microsoft.com/en-us/library/system.windo…). Andere Engines (z.B. WebKit oder Chromium) lassen sich z.B. durch COM-Schnittstelle auch nutzen - aber das ist natürlich nicht so einfach wie die Verwendung des Microsoft-Elementes
Falls ich Deine Frage falsch verstanden haben - einfach noch mal anders stellen
Danke, Ich glaube ich habe die Frage falsch gestellt!
Ich meinte, das wenn ich verschiedene webbrowser controls geöffnet habe(in jedem Tab eben eins), das das
Programm dann die angegebene Seite(aus der ComboBox) in dem Browser vom gerade
geöffneten Tab läd.
Nicht direkt, da ich die frage falsch gestellt habe.
Ich meinte, dass wenn ich in jedem geöffneten Tab ein
Webbrowser control habe, dass mein Programm dan weis,
in welchem Tab es die Seite öffnen soll(also im gerade
sichtbaren Webbrowser)!
Mfg Software Junior
Ja, ich möchte das aktuell selektierte Tab-Panel in
meinem Tab-Control abfragen. Ja, Ich schreibe für Windows und ich verwende Windows-Forms.
Inzwischen habe ich das Problem aber gelöst!
Danke für die antwort,
Mfg Software Junior
Achso…
um das gerade angezeigte WebBrowser Control herauszufinden könntest du es einfach in der (child) ControlCollection der aktuellen TabPage suchen.
Ungetestetes Beispiel ausm Kopf:
var curBrContr;
myTabContr.SelectedTab.Controls.ToList().ForEach(contr =\>
{
if(contr.GetType() == (new WebBrowser()).GetType())
curBrContr = contr;
});
In diesem gefunden Control kannst du dann einfach die Adresse entsprechend ändern.
Respektive kannst du, wenn du die TabPage wechselst auch oben in deiner „Adressleiste“ auch die Url entsprechend dem aktuellen Tab anpassen. Dazu kannst du dich einfach an z.B. das SelectedIndexChanged Event des TabControl anhängen und beim TabPage-Wechsel entsprechend reagieren.