2016-04-27 4 views
-1

В настоящее время я использую Visual Basic 2010 и делаю базовый калькулятор. Он должен распознавать нажатия клавиш с numpad и рассматривать их как кнопки на моем калькуляторе, используемые для чисел и операций. Однако я не могу заставить его работать.Преобразование клавиши в текстовое поле в vb.NET

Например, я хотел бы свою программу, чтобы отобразить номер 4 в командной строке при Numpad 4 нажимается и я пытаюсь сделать это следующим образом:

Однако, когда я начинаю свою программу и попробуйте нажать numpad4, ничего не появляется. Любая помощь в этом вопросе была бы весьма признательна. [Решено]

Другая проблема заключается в том, что кнопка ввода возвращает значение «1» на numpad вместо вычисления ответа, который я бы хотел.

Case Keys.Enter 
EnterPress(btnEqual)   

Private Sub EnterPress(btn As Button) 
    '# Enter Button 
    If txtDisplay.Text.Length <> 0 Then 
     CalculateTotals() 
     Operation = String.Empty 
     Point = False 
    End If 
End Sub 

Мой код в целом можно найти здесь: http://pastebin.com/dsMCNy3i

Вот код моей кнопки равен:

Private Sub Master(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnEqual.Click 
    If ModOp = True Then 
     Num2 = Val(txtDisplay.Text) 
     txtDisplay.Text = Num1 Mod Num2 
    ElseIf txtDisplay.Text.Length <> 0 Then 
     CalculateTotals() 
     Operation = String.Empty 
     Point = False 
    End If 
End Sub 
+0

вы поставить точку останова в и шагнула через код, чтобы увидеть, что он делает? – MaCron

+0

Вы используете WinForms? – GibralterTop

+0

Вы не можете подписаться на 'KeyDown' в методе, установленном для' Form Load'. Восстановите событие через список событий, а затем отметьте «Если e.KeyCode = Keys.Numpad4 Then». –

ответ

1

Оказывается, я нашел два решения для этого.

1) Поместите символ «&» перед номером в тексте кнопки в окне свойств.

2) Этот код работает для меня:

Private Sub Keystrokes(sender As Object, e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown 
    Select Case e.KeyCode 
     Case Keys.NumPad1 
      btn1.PerformClick() 
     Case Keys.NumPad2 
      btn2.PerformClick() 
    End Sub 
Смежные вопросы