hallo,
ich habe gerade angefangen mit dem WebBrowser Control von .net 2.0 zu arbeiten. Mein erstes Problem liegt darin einen Link aufzurufen. Habe das so versucht
mshtml.IHTMLElement link = (IHTMLElement) webBrowser1.Document.Links[7].DomElement;
link.click();
webBrowser1.Update();
Hier bekomme ich aber nur ein Geräusch einen Klicks aber die url ändert sicht nicht. Kann mir jmd helfen und sagen wie ich einen Link-Klick ausführen kann?
Das geht ganz einfach:
webBrowser1.Navigate("http://mycsharp.de");
Hallo sniffy,
IHTMLElement sieht aber nicht nach dem 2.0er WebBrowser-Control aus. Aber unter dem 2.0er WebBrowser würde der Click so aussehen:
htmlelemLink.InvokeMember ("Click");
herbivore
hallo,
ich wollte desshalb über den link wechseln, weil dann die neue seite in einem frame angezeigt wird. mit InvokeMember ändert sich aber auch das document im browser nicht. X(
ich hab dann versucht über den frame die seite zu wechseln
HtmlWindow main = webBrowser1.Document.Window.Frames["FrameName"];
main.Navigate(url);
hier passiert aber auch nichts. ?(
Wie kann ich einen link-klick vom benutzer simulieren bzw. in einem frame die seite wechseln?
Hallo sniffy,
der Code den du jetzt gepostet hat, sieht schon mehr nach dem 2.0er WebBrowser-Control aus. 🙂
Und beim 2.0er geht die Zeile, die ich gepostet habe auf jeden Fall. Ob Frames oder nicht ist egal. htmlelemLink.InvokeMember ("Click") funktioniert genauso, als hätte man auf den Link geklickt. Ich habe eine ganze Anwendung darauf aufgebaut. Funktioniert alles wunderbar.
herbivore
Könnt ihr mir mal sagen, wo ich dieses WebBrowser Controll finden kann?
Ist es eine Art eines Projektes oder irgendwas, dass man in C# importieren muss?
Ich find's einfach nicht 🙁
du benötigst .NET 2.0!
System.Windows.Forms.WebBrowser
Du findest das Control auch unter Common Controls im Designer (Visual Studio 2005 versteht sich)
Gruss,
.unreal
Es geht auch mit 1.1! Allerdings ist es dann ein ActiveX Control!
Das Control in 2.0 ist eigentlich nur ein wrapper. Um das control im vollen umfang zu nutzen ist das activex control in verbindung mit mshtml besser!
Probiers mal über das MSHTML-DOM
public void ClickLinkElementWithHrefAttributes(String hrefAttrib)
{
try
{
foreach(HtmlElement el in ((HtmlDocument)this.editorWebBrowser.Document).getElementsByTagName("A"))
{
if(el.getAttribute("href",0).ToString().Equals(hrefAttrib))
{
el.click();
break;
}
}
}
catch
{
}
}
gruss
Original von Sixpack
Es geht auch mit 1.1! Allerdings ist es dann ein ActiveX Control!
Das Control in 2.0 ist eigentlich nur ein wrapper. Um das control im vollen umfang zu nutzen ist das activex control in verbindung mit mshtml besser!
Ja so ähnlich 🙂 Der einzige Unterschied liegt im ActiveX-Hoster. In 1.1 Hostet ein VB-Wrapper das WebbrowserControl, wobei in 2.0 ein C# - Control selber hostet. Das ist der Einzige Unterschied meines Wissens nach. Der entscheidende Punkt liegt aber nicht im Wrapper für das ActiveX-Objekt für den WebBrowser-Control sondern im Hosten des ActiveX-Dokumentes, was noch ein Überladen des DOM's ermöglicht -> DOM-Hacking 🙂
gruss