Laden...

Daten von Textfeld in HTML Seite, in TextBox von Anwendung übertragen

Erstellt von Trekki1990 vor 14 Jahren Letzter Beitrag vor 14 Jahren 1.835 Views
Trekki1990 Themenstarter:in
503 Beiträge seit 2008
vor 14 Jahren
Daten von Textfeld in HTML Seite, in TextBox von Anwendung übertragen

Hallo liebe Community!

Folgendes Problem:

Ich habe eine HTML Seite in einem WebBrowser Control.
Auf der HTML Seite befinden sich Textfelder, die beschriftet sind.
In meiner Anwendung habe ich auch Textfelder.
Ist es nun möglich die Daten der Textfelder aus der HTML Seite, in
die Textfelder meiner Anwendung zu übertragen?

Habe hier im Forum und bei Google gesucht und nichts gefunden.
Habe auch schon selbst überlegt, aber so richtig finde ich keinen
Lösungsansatz.

Ich hoffe es hat einer eine gute Idee!
Ich danke schonmal im Voraus für eure Bemühungen.

Gruß Trekki

4.506 Beiträge seit 2004
vor 14 Jahren

Hallo Trekki1990,

Ich habe eine HTML Seite in einem WebBrowser Control. Nur noch einmal die Rückfrage: Das WebBrowser Control läuft innerhalb Deiner Anwendung?

-> Wenn ja, dann kannst Du über dieses Control auf den HTML-DOM zugreifen und über alle Elemente itarieren. Am Besten Du hast einen Bezeichner für das Textfeld (im HTML Quellcode als "id" gekennzeichnet). Dann kannst Du auch direkt das Textfeld ansprechen und den dort hinterlegten Text abgreifen.

Das Übertragen auf Deine Windows-Form Elemente ist dann überhaupt kein Problem mehr denke ich, oder?

Tipp: MSDN - Walkthrough Accesing DHTML DOM via C#

Grüße
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

2.891 Beiträge seit 2004
vor 14 Jahren

Hallo Trekki1990,

falls du das WebBrowserControl gar nicht zur Anzeige brauchst, sondern einfach nur die Webseite auslesen willst, sollte dir der WebClient mit HTTP-POST- und Cookie-Unterstützung (und die Links am Ende) helfen.

Gruß,
dN!3L

Trekki1990 Themenstarter:in
503 Beiträge seit 2008
vor 14 Jahren

@norman_timo

Danke für deine Antwort!!
Ja ich benutze das WebBrowser Control in meiner Anwendung.
Das mit HTML-DOM werde ich mal probieren.

@dN!3L

Danke auch für deine Antwort!!
Ist auch sehr interessant, das kann ich dann wahrscheinlich für was anderes
gebrauchen!

Ich werde dann mal die Lösung posten.

Trekki1990 Themenstarter:in
503 Beiträge seit 2008
vor 14 Jahren

Habe herausgefunden, dass ich erst die MSHTML.dll einbinden muss, um Zugriff
auf wichtige Eigenschaften zu bekommen.

  1. Verweis hinzufügen (Projekt -> Verweis hinzufügen -> COM-Objekte -> "Microsoft HTML Object Library" auswählen -> OK

  2. Usingdirektive hinzufügen

using mshtml;

So jetzt kann man die erweiterten Eigenschaften benutzen.
Habe dann das Codebeispiel von norman_timo auseinandergeflückt:


private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
            IHTMLDocument2 doc = (IHTMLDocument2)axWebBrowser1.Document.DomDocument;
            IHTMLElementCollection links = doc.links;

            listBox1.Items.Clear();

            foreach (HTMLAnchorElementClass el in links)
            {
                listBox1.Items.Add(el.outerHTML);
            }
}

Hier bekomme ich alle Links einer Seite.
Ich finde nur nirgends in den Eigenschaften, die Möglichkeit ein INPUT Feld
zu finden und auszulesen.

Denk ich zu kompliziert oder bin ich einfach nur blind?

Gruß Trekki

2.891 Beiträge seit 2004
vor 14 Jahren

Hallo Trekki1990,

kannst du nicht wie hier beschrieben einfach den HTML-Text auswerten? Z.B. indem du ein XmlDocument erstellst oder den SgmlReader benutzt? Sicherlich reicht sogar ein regulärer Ausdruck.

Ansonsten würde ich denken, einfach "all" durchgehen und jeweils prüfen, ob es ein input-Element ist.

Gruß,
dN!3L

Trekki1990 Themenstarter:in
503 Beiträge seit 2008
vor 14 Jahren
<tr><td>PLZ :</td><td><input name="plz" type="text" value="40211" size="30" /></td></tr>
<tr><td>Ort :</td><td><input name="ort" type="text" value="Duesseldorf" size="30" /></td></tr>

So sieht der Queltext der Seite aus. Der ist auch immer gleich, nur die VALUES ändern sich. Dies ist nur ein Ausschnitt der Seite es sind viel mehr.

Jetzt weiß ich nicht wie komplex die Sache werden kann...

2.891 Beiträge seit 2004
vor 14 Jahren

Hallo Trekki1990,

Jetzt weiß ich nicht wie komplex die Sache werden kann...

Ist das eine Frage? Wie gesagt, entweder du iterierst du "all" (statt Links) oder du durchsuchst einfach den Quelltext (wenn man an den vernünftig rankommt) mit einem Regex (der für deinen Anwendungsfall ja total leicht ist).

Gruß,
dN!3L