我有以下代码:
private Boolean _penny = false;
public void InputTextbox_KeyDown(object sender, KeyEventArgs e)
{
if (!_penny)
{
if (e.KeyCode == Keys.Enter & InputTextbox.Text.Contains("penny"))
{
_penny = true;
OutputTextbox.Text = "yes sir";
InputTextbox.Text = "";
}
}
}
这会清除InputTextbox,以便它可以进一步输入,并且后面的命令仅在_penny = true的布尔值时运行(即:已经命令程序监听其他命令)。
目前,每个文本命令以" _penny == false"结尾。所以该程序基本上停止了听取任何事情。
我的问题是,这个布尔值是否可以保持" true"一段时间?即:用户说"便士",他们可以在几分钟内提出多个输入问题,而不必说"便士"试。
答案 0 :(得分:3)
虽然你可以使用计时器,但这对我来说似乎有些过分。您需要做的就是跟踪到期日期/时间:
private bool CurrentlyValidated
{
get
{
return DateTime.Now < _expiryTime && _validated ;
}
set
{
_validated = value ;
_expiryTime = DateTime.Now.AddMinutes(5) ;
}
}
private bool _validated ;
private DateTime _expiryTime ;
答案 1 :(得分:0)
我使用了Nicholas Carey的解决方案,但略有修改;对于任何想要它的人来说,它是:
private DateTime _expiryTime;
public void InputTextbox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter && InputTextbox.Text.Contains("penny"))
{
_expiryTime = DateTime.Now.AddMinutes(1);
OutputTextbox.Text = "yes sir";
}
else if (e.KeyCode == Keys.Enter && InputTextbox.Text.Contains("what time is it") && DateTime.Now < _expiryTime)
{
code runs here...
}
这将_expiryTime设置为在文本框中输入单词“penny”时。然后,用户可以运行他们喜欢的以下任何命令1分钟。