Обработка клавиш со стрелками вверх и вниз в ListBox в VB6 - PullRequest
0 голосов
/ 26 ноября 2010
Public Sub subkeydown(txt As TextBox, lst As ListBox, KeyCode As Integer)

  On Error Resume Next

  lstfstrec = True

  If txt.Text = "" Then lst.Visible = False: Exit Sub
  If KeyCode = 40 Then
    lst.Selected(lst.ListIndex + 1) = True ': Exit Sub
    'MsgBox lstMedicine.ListIndex
  End If
  If KeyCode = 38 Then lst.Selected(lst.ListIndex - 1) = True ': Exit Sub

End Sub

В моем проекте есть функция subkeydown () (см. Выше), которая вызывается, когда пользователь нажимает клавиши со стрелками вверх или вниз. Когда функция вызывается, вызывается событие click ListBox. ListBox содержит название лекарственного средства и привязан к базе данных, поэтому я хочу вызвать событие Click, когда пользователь нажимает на ListBox, но не автоматически.

1 Ответ

0 голосов
/ 26 ноября 2010

Вы можете установить флаг "isUpDownClicked" в true при нажатии кнопки вверх / вниз, и в вашем Sub List_Click вы выходите из sub, когда флаг равен true, например:

Option Explicit
Dim lstfstrec As Boolean
Dim isUpDownClicked As Boolean

Public Sub subkeydown(txt As TextBox, lst As ListBox, KeyCode As Integer)

    On Error Resume Next

    lstfstrec = True

    If txt.Text = "" Then lst.Visible = False: Exit Sub
    If KeyCode = 40 Then
      lst.Selected(lst.ListIndex + 1) = True ': Exit Sub
      'MsgBox lstMedicine.ListIndex
    End If
    If KeyCode = 38 Then lst.Selected(lst.ListIndex - 1) = True 
End Sub

Private Sub CommandUp_Click()
    isUpDownClicked = True
    subkeydown Text1, lstMedicine, 38
End Sub
Private Sub CommandDown_Click()
    isUpDownClicked = True
    subkeydown Text1, lstMedicine, 40
End Sub

Private Sub Form_Load()
    lstMedicine.AddItem "1"
    lstMedicine.AddItem "2"
    lstMedicine.AddItem "3"
End Sub

Private Sub lstMedicine_Click()
    If isUpDownClicked Then
        isUpDownClicked = False
        Label1.Caption = "no"
        Exit Sub
    End If

    Label1.Caption = "lst_Click"
End Sub
...