Bryan Albrecht

Windows Forms WebBrowser

In Windows Forms ist es möglich über ein Objekt namens WebBrowser eine Internet Seite anzeigen zu lassen.
Durch dies ist es möglich z.B. einen eigenen Browser erstellen zu können.

Wenn man den Web Browser verwendet, ohne weitern Einstellungen vorzunehmen, dann kann es auf einigen Webseiten zu einem Problem mit Javascripts usw. führen.

Es ist möglich eine Standartseite anzugeben, welche beim Starten des Programmes aufgerufen wird. Dies ist im Property Url möglich. Während der Laufzeit kann diese URL nicht über dieses Property verändert werden. Dazu ist die Funktion Navigate da.

Code:

  1. webBrowser1.Navigate("https://google.com");

Wie die die meisten anderen Objekte von Windows Forms hat der WebBrowser ein Size Property, bei dem man die Grösse festlegen kann. Diese Property lässt sich während der Laufzeit auch noch ändern.

Code:

  1. webBrowser1.Width = 10;
  2. webBrowser1.Height = 10;

Es ist möglich, dass man ein Formular automatisch ausfüllen lässt. Das ausfüllen Funktioniert so:

Code:

  1. webBrowser1.Document.GetElementById("idname")SetAttribute("value","inhalt" );

Im gezeigten Codebeispiel wird über die ID der Textbox auf die value zugegriffen. Dies ist auch für andere Attribute möglich.

Auch möglich ist das Auslesen von einem Attribut. Das geht wie folgt.

Code:

  1. webBrowser1.Document.GetElementById("bet").GetAttribute("value");

Dabei ist zu beachten, dass immer ein String zurückgegeben wird.

Um ein Formular danach automatisch abschicken zu lassen, muss ein Buttonklick simuliert werden.

Der Buttonklick kann man auf zwei verschiedene Arten erzeugen lassen.

Bei der Variante eins wird der Button mit Hilfe der ID gedrückt.

Code:

  1. webBrowser1.Document.GetElementById("id").InvokeMember("click");

Bei der zweiten Variante wird der Klassenname verwendet.

Code:

  1. HtmlElementCollection classButton = webBrowser1.Document.All;
  2. foreach (HtmlElement element in classButton)
  3. {
  4. if (element.GetAttribute("className") == "button")
  5. {
  6. element.InvokeMember("click");
  7. }
  8. }

Da das Navigieren von einer Seite auf eine Andere seine Zeit dauert, werden drei verschieden Events dafür geschmissen.

1: Navigated -> Wird aufgerufen, nach dem der navigate Befehl aufgerufen wird.

2: Navigating -> Wird aufgerufen, bevor der navigate Befehl aufgerufen wird.

3: DocumentCompletetd -> Wird erst aufgerufen nach dem die Seite komplett geladen ist.

Bei allen ist zu beachten, dass sie nicht zu 100% so funktionieren wie beschrieben.