none
Помогите найти ошибку в программе #2 RRS feed

  • Вопрос

  • Вопрос по функционалу калькулятора. Начало тут - http://social.msdn.microsoft.com/Forums/ru-RU/programminglanguageru/thread/15d3a88f-f7ee-4f24-9e00-b76e8b33c722/#be51c5cd-b091-45c8-a2d9-5b8cf447aab0

    Обновленный солюшн http://webfile.ru/6466510

    Калькулятор в виндовс:

    1 + 1 - далее при нажатии на + показывает результат 2 и вспомогательная строка сверху отображает текущую операцию, которую можно выбирать, т.е. далее могу нажимать  + - / * и выбранная операция будет отображаться в строке.

    У меня после 1 + 1 при дальнейшем выборе операции происходят странные вещи. Во вспомогательную строку заносятся цифры, кот. там быть не должно.

    И еще вопрос, как сделать так, чтобы можно было вводить цифры с клавиатуры, а не только мышкой?

    7 апреля 2013 г. 14:58

Ответы

  • Для формы устанавливаете свойство KeyPreview = true, подписываетесь на событие KeyDown и в коде можете обрабатывать это событие следующим образом:

            private void Form1_KeyDown(object sender, KeyEventArgs args)
            {
                switch (args.KeyCode)
                {
                    case Keys.Delete:
                        // Удаляем все
                        break;
                    case Keys.Back:
                        // Удаляем последний символ
                        break;
                    case Keys.Decimal:
                        // Десятичный разделитель
                        break;
                    case Keys.D0:
                    case Keys.NumPad0:
                        // Пользователь нажал 0
                        break;
    
                    ...
                }
                args.Handled = true;
            }

    7 апреля 2013 г. 21:45
  • У меня к сожалению сейчас нет времени разбираться в коде. По второму вопросу вам просто надо запоминать последний операнд и операцию и при нажатии на = повторять вычисление. Третий вопрос, я так понимаю, почти тоже самое что и 2-ой, соответственно и решение аналогичное.
    10 апреля 2013 г. 6:06

Все ответы

  • И еще один момент:

    При (допустим) делении одного числа на другое, в нормальном калькуляторе,  после нажатия на равно, отображается результат, при следующем нажатии на знак равенства, операция повторяется и происходит повторное деление результата на введенное число. 

    У меня после нажатия на знак равенства, происходит только одна итерация деления, после получения результата от операции деления, повторного деления (умножения, сложения, вычитания) не происходит.

    7 апреля 2013 г. 15:26
  • Обновил солюшн (убрал ненужный код)... http://webfile.ru/6466597

    В общем, 3 вопроса:

    Как сделать так, чтобы:

    1. Можно было вводить цифры с клавиатуры?

    2. После ввода операндов и типа операции при (дальнейшем) нажатии на знак равенства, операция повторялась.

    3. После ввода операции и операндов, при выборе операции, она отображалась во вспомогательной строке, и в основном поле выводился корректный  результат?

     
    7 апреля 2013 г. 15:44
  • Для формы устанавливаете свойство KeyPreview = true, подписываетесь на событие KeyDown и в коде можете обрабатывать это событие следующим образом:

            private void Form1_KeyDown(object sender, KeyEventArgs args)
            {
                switch (args.KeyCode)
                {
                    case Keys.Delete:
                        // Удаляем все
                        break;
                    case Keys.Back:
                        // Удаляем последний символ
                        break;
                    case Keys.Decimal:
                        // Десятичный разделитель
                        break;
                    case Keys.D0:
                    case Keys.NumPad0:
                        // Пользователь нажал 0
                        break;
    
                    ...
                }
                args.Handled = true;
            }

    7 апреля 2013 г. 21:45
  • С остальными вопросами не поможете? )
    9 апреля 2013 г. 8:44
  • Пол второму вопросу отслеживаете "case Keys.Enter:" и делаете что вам необходимо.

    По третьему: что именно у вас не получается?

    9 апреля 2013 г. 9:53
  • Если не трудно, скачайте солюшн, http://webfile.ru/6466597 откомпилируйте и попробуйте сложить, например два числа, а потом нажать равно, а потом еще раз равно. В норм. калькуляторе это будет 2+2 = 4 = 6 = 8 итд. у меня так не происходит. Это касательно 2-го вопроса. По 3-му вопросу , при сложении 2-х чисел, выводится результат, но если нажать еще раз на +, то дальше вся арифметика неправильная.

    9 апреля 2013 г. 10:20
  • У меня к сожалению сейчас нет времени разбираться в коде. По второму вопросу вам просто надо запоминать последний операнд и операцию и при нажатии на = повторять вычисление. Третий вопрос, я так понимаю, почти тоже самое что и 2-ой, соответственно и решение аналогичное.
    10 апреля 2013 г. 6:06