繁体   English   中英

Datagridview单元的C#开关案例循环

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM