はじめまして。クレンといいます。
質問です。
ファイルリストボックスのセル位置を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
ファイルリストボックスは、矢印キーで移動(UP DOWN)するように作られています。ので、Key_Downイベントは要りません。
すいません、説明不足でした。
コマンドボタンを押すと、次のセルに移動するだけでなく
処理を行いたいのです。
ファイルリストの標準機能ではそれはできないでしょうから
標準のほうを無視したいのですが
各コマンドボタンにそれぞれkeydownイベントを割り当てましたら
一応、一つずつ移動をするようになりました。
ボタンを無効化する処理を追加して確認いたしました。
kingsord 様 ありがとうございました。
また、わからないことがありましたら
そのときはよろしくお願いいたします。
ツイート | ![]() |