2016-01-12 5 views
0

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

Вот код, который я пробовал до сих пор. Но результат не тот, кем я хотел быть.

private void textBox1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter) 
     { 
      if (textBox1.Text == "1") 
      { 
       MessageBox.Show("Enter a word"); 


      } 

      else if (textBox1.Text == "1") 
      { 
       MessageBox.Show("Hello"); 
      } 
     } 
    } 
+0

оба ваши утверждения if для одного и того же предложения. Либо никто не стреляет, или только первый (из-за другого) – Grubsnik

ответ

1

Вам действительно нужно сохранить свое состояние, прежде чем нажимать клавишу Enter второй раз. В следующей реализации я сохранил состояние в логической переменной «State», так как задача требует только двух возможных состояний.

private bool State = false; 

    private void textBox1_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter) 
     { 
      if (State == false) 
      { 
       MessageBox.Show("Enter a word"); 
       State = true; 
      } 

      else if (State == true) 
      { 
       MessageBox.Show("Hello"); 
       State = false; 
      } 
     } 
    } 

Если у вас больше состояний, можно использовать другие переменный, как строки или использовать частный метод, который выполняет какую-то работу, чтобы определить следующее состояние.

+0

это сработало. Я просто добавил state = false ниже MessageBox.Show («Привет»). и теперь сообщения отображаются поочередно. спасибо – Naomi

+0

Спасибо @Naomi, я обновил ответ – foobar

0

ваших двух if статей одинаковы (textBox1.Text == "1"). Во всяком случае, вы не должны использовать TextBox для отслеживания состояния. Попробуйте создать поле private int time = 1; в исходном коде формы и вместо этого проверьте его. Не забудьте увеличить его на 1 каждый раз, когда вы узнаете, что нажали «Ввод».

 Смежные вопросы

  • Нет связанных вопросов^_^