[英]C# Switch-case Loop for Datagridview cells
我正在使用带有datagridview和webbrowser控件的表单。 我在datagridview中有三列作为URL,用户名和密码。 我想要做的是自动为我经常使用的某些网站登录。 因此,我不确定这是否正确,但是我创建了以下代码。 问题在于switch的参数。
我将单击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");
}
}
你确定
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
返回URL?
那将是第一个起点。
也许:
dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString()
至于datagrid +开关,datagrid不知道/不在乎该开关。 它所知道的是,当按下按钮时,会调用:
private void login_button_Click(object sender, EventArgs e)
如果您对网址进行硬编码会怎样? 其他一切有用吗?
编辑:哦,那是行不通的! 您在交换机中有退货。 因此,您将结束该方法,并且永不调用:
HtmlElementCollection elements = this.webBrowser1.Document.GetElementsByTagName("Form");
foreach (HtmlElement currentElement in elements)
{
currentElement.InvokeMember("Login");
}
我不确定在C#中是否像这样肯定,但是您可能必须对临时变量执行切换,例如
string site = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString();
switch(site)
{
....
}
如果没有其他事情,它将使调试更加容易。
每种情况都应以休息结束; 没有回报;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.