2013-11-28 7 views
0

Я попытался сделать поиск по наилучшему способу сделать это, но я не совсем уверен, что искать; поэтому я надеялся на какую-то помощь здесь, если кто-то возразил бы.Обратите внимание на Chatbot

В моей C# формы У меня есть:

  • InputTextbox
  • OutputTextbox

Я использую "InputTextbox_KeyDown", чтобы запустить все большее число "если" заявления. то есть:

if (e.KeyCode == Keys.Enter & InputputTextbox.Text.Contains("hello") 
OutputTextbox.Text = "hi there" 

Я звоню Chatbot «Пенни», и хотел бы, только искать дополнительные команды после того, как слово «копейка» вводится в InputTextbox. (т. е. если пользователь вводит «привет», ничего не произойдет, потому что они не получили внимания «Пенни»).

Что-то вроде этого:

if (KeyCode == Keys.Enter & InputTextbox.Text.Contains("penny") 
then 
*look for the next InputTextbox.Text* 

ли, что делать какие-либо смысл?

+3

* В этом смысл? * Не совсем ... – MarcinJuraszek

+0

Извините. Ах ... В основном я хочу, чтобы программа выполняла команды только после того, как в «InputTextbox» была введена фраза «Пенни», на которую была получена «привет там». –

+0

Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

1

Вы можете просто установить флаг, указывающий на «копейку» был введен

private bool _isActive = false; 

public void YourMethod() 
{ 
    if (!_isActive) 
    { 
     if (KeyCode == Keys.Enter && InputTextbox.Text.Contains("penny")) 
     { 
      _isActive = true; 
     } 
    } 
    else 
    { 
     if (e.KeyCode == Keys.Enter && InputputTextbox.Text.Contains("hello")) 
     { 
      OutputTextbox.Text = "hi there"; 
     } 

     // other if's 
    } 
} 
0

Couldnt вы просто должны это в верхней части вашего метода InputTextbox_KeyDown?

if(KeyCode != Keys.Enter) return; 
if(!InputTextbox.Text.Contains("penny")) return; 
/* 
* rest of chat responses 
*/ 
Смежные вопросы