控制不正常

时间:2013-09-10 17:29:12

标签: c# vb.net

我正在尝试使用keydown功能。我的代码启动并运行但是我收到了这个奇怪的错误。我正在运行一个查询,如果在数据库列中的值是MIND那么应该检查radiobutton头脑,否则MSSL.but控件总是进入else部分,无论数据库中的值是MIND还是MSSL。 以下是我的代码

    private void txtlogin_userid_KeyDown(object sender, KeyEventArgs e)
     {
       if (e.KeyCode == Keys.Enter)
         {
           if (sender is TextBox)
           {
        TextBox txb = (TextBox)sender;
        dc.SelectCommand = new SqlCommand("select * from UserMaster where UserID='" + txb.Text + "'", sc);
        dc.Fill(ds);
        dg.DataSource = ds.Tables[0];
        txtlogin_name.Text = ds.Tables[0].Rows[0][1].ToString();
        txtlogin_mailid.Text = ds.Tables[0].Rows[0][2].ToString();
        MessageBox.Show(ds.Tables[0].Rows[0][3].ToString());
        string a = "MIND";

        if (ds.Tables[0].Rows[0][3].ToString() == a)
        {
            radiomind.Checked = true;
        }
        else
        {
            radioMSSL.Checked = true;
        }
    }
}}

当我在数据库中输入任何具有MIND作为其值的数字时,消息框显示MIND但仍然控制进入else部分并且MSSL单选按钮激活。该怎么办?

3 个答案:

答案 0 :(得分:1)

在每个收音机上放一个断点[...]。检查过,它真的进入了其他地方吗?也许单选按钮变量名称是错误的。也许单选按钮正在其他地方重置。

    if (ds.Tables[0].Rows[0][3].ToString() == a)
    {
        MessageBox.Show("mind");
        radiomind.Checked = true;
    }
    else
    {
        MessageBox.Show("mssl");
        radioMSSL.Checked = true;
    }

检查您要比较的每个字符串的确切值。他们有额外的空间,角色吗?有时字符串可以有额外的空格。

MessageBox.Show("[" + ds.Tables[0].Rows[0][3].ToString() + "]"); 
MessageBox.Show(ds.Tables[0].Rows[0][3].ToString().Length); 
MessageBox.Show("[" + a + "]"); 
MessageBox.Show(a.Length);

旁注

就像Quibblesome所说,你应该使用SqlParameters因为你容易受到sql-injections的攻击。<​​/ p>

如果您正在选择*,如果您的columsn顺序发生变化,您可能会遇到错误。

答案 1 :(得分:0)

尝试

if (e.KeyCode == Keys.Return)

而不是Keys.Enter


如果你写

private void txtlogin_userid_KeyDown(object sender, KeyEventArgs e)
{
    System.Diagnostics.Debug.WriteLine(e.KeyCode);
}

您将在“输出”窗口中看到实际代码(使用菜单打开:Debug&gt; Windows&gt; Output)。

答案 2 :(得分:0)

尝试

        Convert.ToString(ds.Tables[0].Rows[0][3]) == a 

相反。