控制无法正常工作
本文关键字:工作 常工作 控制 | 更新日期: 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>输出调试)。