c# 在空文本框上隐藏标签

c# hide Label on empty Textbox

我愿意在空文本上隐藏标签 <-- 这是我的预期输出(只是指出以确保您了解我愿意在我的专业程序员的帮助下解决的问题:P) ,我启用了 AutoPostBack 并创建了一个事件 OnTextChanged 并且我在其中定义了以下代码。但它似乎不起作用。有什么想法吗?

protected void TextBox_signup_loginid_TextChanged(object sender, EventArgs e)
{
    if (TextBox_signup_loginid.Text == "")
    {
        Label_signup_loginidcheck.Visible = false;
    }
    int found = 0;
    using (SqlConnection con = new SqlConnection(cs))
    {
        string query = "select count(*) from Users where LoginId = '" + TextBox_signup_loginid.Text + "'";
        SqlCommand cmd = new SqlCommand(query, con);
        con.Open();
        found = Convert.ToInt32(cmd.ExecuteScalar().ToString());
        if (found == 1)
        {
            Label_signup_loginidcheck.ForeColor = System.Drawing.Color.Red;
            Label_signup_loginidcheck.Text = "LoginId Already Exists";
            Label_signup_loginidcheck.Visible = true;
            hdf.Value = "false";
        }
        else
        {
            Label_signup_loginidcheck.Visible = true;
            Label_signup_loginidcheck.ForeColor = System.Drawing.Color.Green;
            Label_signup_loginidcheck.Text = "LoginId Available";
            hdf.Value = "true";
        }
    }

我不知道这是否仍然是个问题,但由于您没有在此处 post 编辑答案或对您的第一个 post 发表评论,我会试着在这里给出答案。

我只想说这里很难给出答案,因为我们不知道查询返回的是什么,也不知道找到的 var 默认是 true (1) 还是 false 但后来我注意到你无论如何都会降低标签的可见性 Label_signup_loginidcheck。

if (found == 1)
{
    Label_signup_loginidcheck.ForeColor = System.Drawing.Color.Red;
    Label_signup_loginidcheck.Text = "LoginId Already Exists";
    **Label_signup_loginidcheck.Visible = true;**
    hdf.Value = "false";
}
else
{
    **Label_signup_loginidcheck.Visible = true;**
    Label_signup_loginidcheck.ForeColor = System.Drawing.Color.Green;
    Label_signup_loginidcheck.Text = "LoginId Available";
    hdf.Value = "true";
}

这意味着您无论如何都要让标签再次可见,我猜这不是您想要的。我猜标签会在很短的时间内不可见,但随后您再次将其设置回 visible = true 并且您甚至可能没有注意到该变化。

您可能应该更改 if/else 分支中的条件,或者在 if 或 else 情况下删除这些雄蕊之一

Label_signup_loginidcheck.Visible = true;