我已经为用户答案设置了一个问题,一旦他们给出答案,我希望禁用文本框并显示正确或不正确的标签。但目前只能键入一个数字,然后会出现正确或不正确的标签。正如您在下面看到的,答案是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;
}
}
答案 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
的操作来完成