的異端你顯然不能有你的蛋糕和吃它。我必須是想要一個C#瀏覽器與NewWindow2和GetElementsByTagName
我目前在我的應用程序中使用了System.Windows.Forms.WebBrowser
。該程序目前依賴於使用GetElementsByTagName
函數。我用它來收集特定類型的所有元素(「輸入」或「textarea」),所以我可以對它們進行排序並返回特定值的值。這是這個函數的代碼(我的web瀏覽器中名爲web1):要注意
// returns the value from a element.
public String FetchValue(String strTagType, String strName)
{
HtmlElementCollection elems;
HtmlDocument page = web1.Document.Window.Frames[1].Document;
elems = page.GetElementsByTagName(strTagType);
foreach (HtmlElement elem in elems)
{
if (elem.GetAttribute("name") == strName ||
elem.GetAttribute("ref") == strName)
{
if (elem.GetAttribute("value") != null)
{
return elem.GetAttribute("value");
}
}
}
return null;
}
(積分:我需要從處於框架拉網頁,並根據情況,元素的標識名稱將是無論是在名稱還是參考屬性中)
所有這些都像System.Windows.Forms.WebBrowser
的夢一樣工作。
但是它無法做到的是重定向一個新窗口的開放以保留在應用程序中。任何在新窗口中打開的內容都將射向用戶的默認瀏覽器,從而失去會話。 NewWindow2
事件可以輕鬆修復此功能,而System.Windows.Forms.WebBrowser
不具備此功能。
現在原諒我在它不在的時候被驚呆了。我有但是最近放棄了VB6並轉移到C#(是VB6,顯然我受僱於搖滾),並且在VB6中,WebBrowser
擁有GetElementsByTagName
函數和NewWindow2
事件。
該AxSHDocVw.WebBrowser
有一個NewWindow2
事件。我很樂意幫助我將新窗口發送到我需要的地方。在WebBrowser
做到這一點的代碼是(frmNewWindow是隻含有另一WebBrowser
所謂的WEB2.0(碼頭設置爲填寫一個簡單的表格)):
private void web1_NewWindow2(
object sender,
AxSHDocVw.DWebBrowserEvents2_NewWindow2Event e)
{
frmNewWindow frmNW = new frmNewWindow();
e.ppDisp = frmNW.web2.Application;
frmNW.web2.RegisterAsBrowser = true;
frmNW.Visible = true;
}
我無法產生對我自己的方式來複制該功能與壓倒性的常規NewWindow事件。
我也無法弄清楚如何複製FetchValue
功能我上面使用AxSHDocVw.WebBrowser
詳細說明。它似乎以一種完全不同的方式處理事情,而我對如何做事的知識卻毫無用處。
我知道我是一個生病,扭曲的男人,因爲這個奇怪的幻想在一個應用程序中使用這兩件事情。但是你能否在你的心中找到幫助這個愚蠢的理想主義者的人呢?
你能向我們展示如何重定向到新頁面的代碼嗎?您是否嘗試在當前的WebBrowser控件中重新加載頁面? – 2012-03-21 17:44:34
我目前沒有重定向的代碼。在OP中,第二個代碼塊是如果我有NewWindow2它將如何工作的。我希望將打開的URL重定向到一個新的表單。 – friggle 2012-03-21 18:41:54