布尔语句True为时间长度

时间:2013-12-03 00:32:05

标签: c# boolean

我有以下代码:

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"一段时间?即:用户说"便士",他们可以在几分钟内提出多个输入问题,而不必说"便士"试。

2 个答案:

答案 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分钟。