验证文本框以接受多个数字

时间:2017-03-02 00:05:53

标签: c# winforms

我已经为用户答案设置了一个问题,一旦他们给出答案,我希望禁用文本框并显示正确或不正确的标签。但目前只能键入一个数字,然后会出现正确或不正确的标签。正如您在下面看到的,答案是10.因此,只要输入1,就会显示错误并禁用文本框。

    private void txt_2a_TextChanged(object sender, EventArgs e)
    {
        if (txt_2a.Text == "10")
        {
            lblcorrectQ2_1.Visible = true;
            txt_2a.Enabled = false;
        }
        else
        {
            lblincorrectQ2_1.Visible = true;
            txt_2a.Enabled = false;
        }

    }

2 个答案:

答案 0 :(得分:1)

为什么不使用 ENTER 确认用户输入了他/她的答案。您可以使用KeyDown事件来捕获输入,如果 ENTER 被命中,则验证输入:

private void txt_2a_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        validateAnswer(txt_2a.Text);
    }
}

private void validateAnswer(string text)
{
    if (text == "10")
    {
        lblcorrectQ2_1.Visible = true;
    }
    else
    {
        lblincorrectQ2_1.Visible = true;
    }

    txt_2a.Enabled = false;
}

答案 1 :(得分:0)

如果您不希望用户离开此框,您可以实施一种机制,在第一次执行TextChanged事件时,您可以创建{{3}并告诉它在时间结束后执行一个动作(比如1秒)。

如果发生另一个TextChanged事件,请检查是否已创建Timer。如果有,则调用timer.Stop(); timer.Start();重置计时器。当用户最终停止输入1秒钟时,可以进行验证。

请注意,由于验证正在修改ui,并且Timer在不同的线程上运行,因此您可能需要将线程封送回UI线程。这可以通过执行类似Timer或此https://stackoverflow.com/a/661706/193282

的操作来完成