キーイベントの2重処理をやめるには?

解決


クレン  2002-07-31 10:04:28  No: 104596

はじめまして。クレンといいます。

質問です。
ファイルリストボックスのセル位置を2つのコマンドボタンで移動する
ものをつくりました。
そして、KeyDownイベントを使用して矢印キーの右キー、左キーを
各ボタンに割り当てました。
そこで問題なのは、
右キー(左キー)を一回押すと、2つずつ移動するのです。
たぶん、キーを押すと2回コマンドボタンが押されている状態に
なっている2重処理なのではないかと思うのですが、
どうしたらよいのかわかりません。
ちなみにボタンをクリックした場合は正常に1つずつ移動してます。

キーイベントに関するソースを下に書きます。

Private Sub Form_Load()
     KeyPreview = True
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    Select Case KeyCode
        Case vbKeyRight: Call NextButton_Click
        Case vbKeyLeft:  Call PrevButton_Click
    End Select
End Sub

いちおう、コマンドボタンの一つを書いておきます

'次のセルに移動する
Private Sub NextButton_Click()
'前処理
    '次の項目番号
    nNextList = FileList.ListIndex + 1
    
    '現在ディレクトリのファイル数(最大項目数)
    nMaxList = FileList.ListCount

'セル移動処理
    '一つ下にセルを移動
    If (nMaxList > nNextList) Then
        FileList.Selected(nNextList) = True
    End If
End Sub

説明不足のところがありましたらすいません。
どうか、ご指導の程おねがいいたします。

環境:
OS:WindowsMe
VB:VB6.0


kingsord  2002-07-31 21:38:27  No: 104597

ファイルリストボックスは、矢印キーで移動(UP DOWN)するように作られています。ので、Key_Downイベントは要りません。


クレン  2002-08-01 00:35:15  No: 104598

すいません、説明不足でした。

コマンドボタンを押すと、次のセルに移動するだけでなく
処理を行いたいのです。

ファイルリストの標準機能ではそれはできないでしょうから
標準のほうを無視したいのですが


クレン  2002-08-01 01:25:39  No: 104599

各コマンドボタンにそれぞれkeydownイベントを割り当てましたら
一応、一つずつ移動をするようになりました。
ボタンを無効化する処理を追加して確認いたしました。

kingsord 様 ありがとうございました。

また、わからないことがありましたら
そのときはよろしくお願いいたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加