Как кодировать кнопку клавиатуры для переключения между 2 режимами? - PullRequest
1 голос
/ 09 апреля 2010

Я делаю проект.Я не буду вдаваться в детали, но упросту свою идею.Я использую азбуку Морзе (точка и тире), и у меня есть 2 метода: convert_MorseToChar() и Convert_MorseTonum().В методе convert_MorseToChar() есть переключатель для сравнения ввода от пользователя, который будет азбукой Морзе, и сопоставления его с символами:

  private String convert_MorseToChar(ref string Ch) 
  {
    switch (Ch)
        {
        Case ".-":
            MorsetoChar = "a"
            break;
        Case "-...":
            MorsetoChar = "b"
            break;
        Case "-.-.":
            MorsetoChar = "c"
            break;
        Case "-..":
            MorsetoChar = "d"
            break;
        Case ".":
            MorsetoChar = "e"
            break;
        }
   }

и другой метод Convert_MorseToNum (), использующий те же комбинацииКоды Морзе, но сопоставляют их с числами:

  private String Convert_MorseToNum(ref string Ch) 
  {
    switch (Ch)
        {
        Case ".-":
            MorsetoChar = "1"
            break;
        Case "-...":
            MorsetoChar = "2"
            break;
        Case "-.-.":
            MorsetoChar = "3"
            break;
        Case "-..":
            MorsetoChar = "4"
            break;
        Case ".":
            MorsetoChar = "5"
            break;
        }
   }

Теперь сенарио: есть 2 текстовых поля, одно из которых пользователь будет писать в них азбукой Морзе, а другое - для вывода.Пользователь напишет на клавиатуре точку . и тире - и нажмите Enter, после чего программа перейдет к ОДНОМУ из 2 методов для преобразования азбуки Морзе.Теперь, что говорит программе, куда идти конвертировать?

мой вопрос: я хочу создать ключ режима для переключения между 2 режимами: MorseToChar и MorseToNum.Я хочу, чтобы клавиша со стрелкой вниз действовала как режим.Когда пользователь нажимает стрелку вниз, тогда программа переходит в режим MorseToChar, когда пользователь вводит программу напрямую, использует метод convert_MorseToChar для преобразования в символы.Когда пользователь снова нажимает стрелку вниз, программа переключается в режим MorseToNum, когда пользователь вводит как код Морзе, программа будет напрямую использовать метод Convert_MorseToNum() для преобразования в числа.Как я могу это сделать?

Пожалуйста, извините за мой английский, английский не является моим родным языком:)

Ответы [ 2 ]

1 голос
/ 09 апреля 2010

Вы можете использовать событие KeyDown. Если нажатой клавишей является стрелка вниз, вы переключаете режимы:

private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
    // Determine whether the keystroke is the down arrow.
    if (e.KeyCode == Keys.Down)
    {
        charMode = !charMode;
    }
}

Конечно, вы должны определить свой charMode как bool. А при вызове метода конвертации вы проверите его значение.

private String Convert_Morse(ref string Ch) 
{
    if (charMode) return convert_MorseToChar(Ch)
    else
    return convert_MorseToNum(Ch);
}
0 голосов
/ 09 апреля 2010

Вы можете использовать логическое значение, которое переключается при каждом нажатии нужной клавиши, например:

bool NumericMode = false; // accessible to the Morse code methods
private void ToggleMode()
{
    if(NumericMode)
        NumericMode = false;
    else
        NumericMode = true;
}
...