2

我正在使用datagridview和webbrowser控件的窗體上工作。在datagridview中,我有三列作爲URL,用戶名和密碼。我想要做的是自動登錄我經常使用的一些網站。出於這個原因,我不確定這是否是正確的方法,但我創建了下面的代碼。問題在於切換的論點。Datagridview單元格的C#切換案例循環

我將單擊datagridview上的行,然後單擊login_button,以便將用戶名和密碼信息傳遞到網頁上的相關字段。爲什麼我需要開關箱循環,因爲所有的網頁都有不同的用戶名和密碼字段的元素ID。

正如我所說,我不確定datagridview是否允許切換大小寫,我搜索了網絡但找不到任何示例。

private void login_button_Click(object sender, EventArgs e) 
    { 
     switch (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString()) 
     { 
      case "http://www.website1.com": 
       webBrowser1.Document.GetElementById("username").InnerText = dataGridView1.Rows[3].Cells[3].Value.ToString(); 
       webBrowser1.Document.GetElementById("password").InnerText = dataGridView1.Rows[3].Cells[4].Value.ToString(); 
       return; 
      case "http://www.website2.com": 
       webBrowser1.Document.GetElementById("uname").InnerText = dataGridView1.Rows[4].Cells[3].Value.ToString(); 
       webBrowser1.Document.GetElementById("pswd").InnerText = dataGridView1.Rows[4].Cells[4].Value.ToString(); 
       return; 
     } 
     HtmlElementCollection elements = this.webBrowser1.Document.GetElementsByTagName("Form"); 
     foreach (HtmlElement currentElement in elements) 
     { 
      currentElement.InvokeMember("Login"); 
     } 
    } 

回答

0

有你確信

dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(); 

返回的網址是什麼?

這將是第一個開始的地方。

可能:

dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString() 

對於數據網格+開關,DataGrid不知道開關/護理。它知道,當按下按鈕時,請致電:

private void login_button_Click(object sender, EventArgs e) 

如果您硬編碼URL,會發生什麼?其他一切工作嗎?編輯: 哦,這是不會工作! 您的交換機中有退貨。所以你結束方法,從不打電話:

HtmlElementCollection elements = this.webBrowser1.Document.GetElementsByTagName("Form"); 
    foreach (HtmlElement currentElement in elements) 
    { 
     currentElement.InvokeMember("Login"); 
    } 
0

我不知道,如果是明確這樣在C#中,但你可能要在一個臨時變量 例如執行切換

string site = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString(); 
switch(site) 
{ 
.... 
} 

如果沒有其他,它會使調試更容易。

此外,每個案件應以休息結束;不是回報;