[C#] Combobox aus Webformular auslesen

Achja und das
Code:
webBrowser1.Document.GetElementById("server_select").InnerText = "test2";
( Aber dieser Code funkst nicht ganz )
habe ich versucht um denn halt in dem Formular das denn muli 2 ausgewählt wird
HTML:
<select id="server" class="server" name="server" >
  <option value="test1" >muli 1</option>
 <option value="test2" >muli 2</option>
 </select>
habe ich versucht die


P.s Ich glaube deine Lösung wäre auch besser falls mehr als nur ein Submint button vorhanden sein sollte oder sehe ich das falsch
 
Wenn du ein Element des DropDowns auswählen willst, wirst das "selected" Attribut des Eintrags setzen müssen.

Könnte so aussehen:

C#:
foreach (HtmlElement child in webBrowser1.Document.GetElementById("server_select").Children)
{
	if (child.GetAttribute("value") == "test2")
	{
		child.SetAttribute("selected", "selected");
	}
}
 
Mhh okay das funktioniert vielen dank.
Kannst du mir auch noch erklärren warum man
Code:
child.SetAttribute("selected", "selected");
also selected 2 mal da reinschreibt ich hatte das auch mit SetAttribute gemacht aber wenn ich dann ausgeführt hatte sich die Box verändert

Ich habe da auch gleich noch mal was anderes ausbrobiert
Code:
webBrowser1.Document.GetElementById("submitButton").InvokeMember("click");
Ist das nicht besser als das
Code:
HtmlElement submitButton = webBrowser1.Document.GetElementById("submitButton");
if (submitButton != null)
    submitButton.InvokeMember("click");
 
Zuletzt bearbeitet:
Warum ich 2 mal selected geschrieben habe kannst hier nachelesen: SelfHTML: Einträge vorselektieren

Zu deiner 2. Frage:

Beides macht das selbe, nur der 3 Zeile funktioniert auch problemlos sollte der Button nicht gefunden werden. Gibts keinen Button wirft dein Einzeiler eine NullReferenceException weil GetElementById("submitButton") null zurückgeliefert hat.
 
Mhh okay das funktioniert vielen dank.
Kannst du mir auch noch erklärren warum man
Code:
child.SetAttribute("selected", "selected");
also selected 2 mal da reinschreibt ich hatte das auch mit SetAttribute gemacht aber wenn ich dann ausgeführt hatte sich die Box verändert

Das kommt daher, dass das Attribut zum Auswählen des Eintrags einer Combo-Box "selected" heißt und um einen Eintrag auszuwählen muss diesem Attribut der Wert "selected" zugewiesen werden.

HTML:
<select ...>
   <option value="test1" selected="selected">Wert1</option>
   <option value="test2">Wert2</option>
</select>

Ich habe da auch gleich noch mal was anderes ausbrobiert
Code:
webBrowser1.Document.GetElementById("submitButton").InvokeMember("click");
Ist das nicht besser als das
Code:
HtmlElement submitButton = webBrowser1.Document.GetElementById("submitButton");
if (submitButton != null)
    submitButton.InvokeMember("click");

Das Ergebnis ist das selbe, der Unterschied ist nur, dass beim zweiten Codestück vorher geprüft wird, ob das Element "submitButton" überhaupt im Quelltext vorhanden ist, da sonst eine NullReferenceExeption ausgelößt würde.


//Edit: Nächstes Mal sollte ich schneller tippen. :-(
 
Zurück