控制无法正常工作

本文关键字:工作 常工作 控制 | 更新日期: 2023-09-27 18:30:46

我正在尝试使用键控功能。我的代码已启动并运行,但出现此奇怪错误。我正在运行一个查询,如果数据库中的列值是 MIND,那么单选按钮 mind 应该在其他 MSSL 中检查,但无论数据库中的值是 MIND 还是 MSSL,控件总是进入 else 部分。以下是我的代码

    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 单选按钮激活。该怎么办?

控制无法正常工作

在每个无线电上放置一个断点[...]。检查一下,它真的会进入其他吗?也许单选按钮变量名称错误。也许单选按钮正在其他地方重置。

    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注入的影响。

如果您正在选择 *,则如果列的顺序发生变化,则未来可能会有错误。

试试

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

相反。

尝试

if (e.KeyCode == Keys.Return)

而不是Keys.Enter.


如果你写

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

您将在"输出窗口"中看到实际代码(打开时为菜单:> Windows>输出调试)。