代码之家  ›  专栏  ›  技术社区  ›  yenren

C#为Datagridview单元格切换大小写循环

  •  2
  • yenren  · 技术社区  · 14 年前

    我正在处理一个带有datagridview和webbrowser控件的表单。我在datagridview中有三列URL、用户名和密码。我想做的是自动登录一些我经常使用的网站。出于这个原因,我不确定这是否是正确的方法,但我创建了下面的代码。问题在于switch的参数。

    我将单击datagridview上的行,然后单击login_按钮,以便将用户名和密码信息传递到网页上的相关字段。我之所以需要一个交换用例循环,是因为所有网页的用户名和密码字段都有不同的元素id。

    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");
            }
        }
    
    2 回复  |  直到 14 年前
        1
  •  0
  •   azamsharp    14 年前

    我不确定在C#中是否确实如此,但您可能需要对临时变量执行开关 例如

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

    同样,每一个案例都应该以中断结束;而不是以回报结束;

        2
  •  0
  •   NitroxDM    14 年前

    你确定了吗

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

    返回URL?

    也许 吧:

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

    private void login_button_Click(object sender, EventArgs e)
    

    如果你硬编码网址会怎么样?其他的都行吗?

    哦,那不行! 你的开关有回报。所以你结束了这个方法,再也没有调用:

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