Оператор переключения «Сброс» после того, как значение равно - PullRequest
0 голосов
/ 10 декабря 2018

Я бы хотел запустить свой переключатель и оператор if / else снова после трехкратного нажатия кнопок.

Текущий нажатый код предназначен для трех кнопок с каждым значением 1.Если они (текущий нажатый код) равны глобальной строке, содержащей 3-значное значение, цвет графического блока изменится на зеленый лес.Это мой код:

        switch ((sender as Button).Text)
        {

            case "1":
                serialMonitor.PrintLine("1");
                currentPressedCode = currentPressedCode + "1";
                break;
            case "2":
                serialMonitor.PrintLine("2");
                currentPressedCode = currentPressedCode + "2";
                break;
            case "3":
                serialMonitor.PrintLine("3");
                currentPressedCode = currentPressedCode + "3";
                break;
            default:
                break;
        }  if (buttonsPressed == 3)
        {
            if (currentPressedCode == vaultCode)
            {

                //vault open
                serialMonitor.PrintLine("vault");
                pcbGreen.BackColor = Color.ForestGreen;

            }
        }
        else
        {
            // wrong code
            serialMonitor.PrintLine("wrong");
            MessageBox.Show("Wrong password"); // wrong password messagebox
            pcbRed.BackColor = Color.DarkRed;
        }

1 Ответ

0 голосов
/ 10 декабря 2018

Есть много способов сделать это, но стараясь максимально сохранить свою логику:

switch ((sender as Button).Text)
{

    case "1":
        serialMonitor.PrintLine("1");
        currentPressedCode = currentPressedCode + "1";
        break;
    case "2":
        serialMonitor.PrintLine("2");
        currentPressedCode = currentPressedCode + "2";
        break;
    case "3":
        serialMonitor.PrintLine("3");
        currentPressedCode = currentPressedCode + "3";
        break;
    default:
        break;
}
if (buttonsPressed == 3)
{
    if (currentPressedCode == vaultCode)
    {

        //vault open
        serialMonitor.PrintLine("vault");
        pcbGreen.BackColor = Color.ForestGreen;

    }
    else
    {
        // wrong code
        serialMonitor.PrintLine("wrong");
        MessageBox.Show("Wrong password"); // wrong password messagebox
        pcbRed.BackColor = Color.DarkRed;

    }
    buttonsPressed = 0;
    currentPressedCode = "";
}

Единственные изменения, которые я сделал:

  1. ПеремещениеВаш блок «Неправильный пароль» еще после «Правильного пароля», если блок
  2. Сброс buttonsPressed и currentPressedCode после того, как кто-то набрал 3 цифры
...