2010-11-26 41 views
0
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()という名前の関数があります(上記参照)。キー。関数が呼び出されると、ListBoxのclickイベントが発生します。 ListBoxには薬の製品名が含まれており、データベースにバインドされているので、ユーザーがListBoxをクリックしたときにClickイベントを呼び出すが、自動的には呼び出さない。VB6のリストボックスの上下矢印キーの処理

+1

あなたが選択する必要はありません上向き矢印と下向き矢印はListBoxの選択を変更し、フォーカスがある限りあなたの上/下線を処理します。これは実際に焦点の問題ですか? – gkrogers

答えて

0

あなたが好きな、フラグがtrueの場合、サブを終了しますList_Clickアップ/ダウンボタンをクリックしたときにtrueに「isUpDownClicked」フラグを設定し、あなたのサブですることができます

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 
関連する問題