2013-04-02 78 views
-1

我一直在試圖從我的C#窗體中輸入數據,當我點擊提交我的形式,它應該被轉移到網站的TextBox按鈕......這裏使用c#發送數據從文本框到網站文本框?

private void button1_Click(object sender, EventArgs e) 
{ 
    webBrowser1.Document.All.GetElementsByName("email")[1].SetAttribute("Value", textBox2.Text); 
    webBrowser1.Document.All.GetElementsByName("pass")[1].SetAttribute("Value", textBox3.Text); 
    webBrowser1.Document.GetElementsByTagName("form")[1].InvokeMember("submit"); 
} 

private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) 
{ 
} 

private void button2_Click(object sender, EventArgs e) 
{ 
} 

private void Form1_Load(object sender, EventArgs e) 
{ 
    webBrowser1.Navigate("gmail.com");//Your link 
    webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); 
} 

我所做的是一個開放鏈接在網絡瀏覽器中,並搜索屬性來輸入數據,但它給出了一個錯誤"Value of '1' is not valid for 'index'. 'index' should be between 0 and -1."當我改變索引爲零它給出了相同的錯誤。

+0

我的猜測是'GetElementsByName'要麼不返回數組,要麼使用'[0]'獲取第一個元素。 – sellmeadog

回答

0

GetElementsByName("email")[1]意味着有一個名爲「電子郵件」的至少兩種元素並且要選擇爲[1]指定數組的索引和數組從索引0

啓動你的情況,第二個看起來只有一個名稱爲「email」的元素(可能還有其他元素,如果存在這個名稱的元素),這意味着您需要獲取數組中的第一個元素換句話說,GetElementsByName("email")[0]

+0

對不起,但我沒有得到你說的,你可以請在我的代碼中糾正一點我錯了嗎? – user2233501

+0

我已經在上面的答案中做了。你不明白什麼? GetElementsByName方法返回一個「列表」項目,而不僅僅是一個,最後[1]是選擇要使用的數組的索引。在你的情況下,你試圖訪問「列表」中可能只包含一個項目的第二項[1],在這種情況下,你應該使用[0]來獲取數組中的第一項。 – coolmine

0

代碼已經修改爲您的陣列。

GetElementsByName("email")[0]. 
+0

我改變了,但那也行不通? – user2233501

+0

您是否修改了陣列? 所以Email是[0],Pass是[1];形式是[2]? – Sean

相關問題