
VB6で開発しています。
ラベルとListViewのみのフォーム上で、
PageUpやPageDownキー押下で、イベントを発生させたいのですが、
PageDownを押下すると、ListView内のリストのカーソルが下に移動してしまい、
(フォーカスが当たるコントロールがListViewしかないためと思われますが)
イベントが発生せずに困っています。
自分で実現しようとしてできなかった方法を紹介します
・リストビューにフォーカスが当たらないようにする。
Enabled = Falseだとスクロールバーが使えないので困る。
・ListViewはEnabled=Falseにし、スクロールバーコントロールを使って、スクロールさせる。
スクロールさせる方法が見つかりませんでした。
何か、よいアイデアや方法があれば、ご教授宜しくお願いしますm(_ _)m
No.3ベストアンサー
- 回答日時:
VB6の標準コントロールの場合は FormのKeyPreviewをTrueにすることでコントロールより先にForm側でKeyPress/KeyDown/KeyUpで処理可能なようです
しかしListViewやTreeViewの場合同様の設定を施しても ListView側がキーイベントを処理してしまうようです
方法としては ListViewコントロールをサブクラス化してサブクラス化したListViewのWndProcのなかで WM_KEYDOWNなどのメッセージを親に通知する仕組みを構築する必要がありそうです
この回答への補足
上記の方法ですと、大変難しそうで自分には無理です(^^;)
上記の方法を見て思いついて、結局、
ListViewのKeyDownイベントで、フォームのKeyDownイベントを呼び出すことにしました。
いろいろありがとうございました。
No.2
- 回答日時:
Accessのフォーム上にテキストボックスを配置したケースでテストしました。
Private Sub テキスト0_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyPageUp Then MsgBox ("PageUp")
If KeyCode = vbKeyPageDown Then MsgBox ("PageDown")
End Sub
これまた参考までに。
No.1
- 回答日時:
PageUp/PageDownはKeyPressイベントでは使用不可のようです。
KeyDown/KeyUpイベントの場合は使用可能のようです。
この2点はVB6(持っていいないのでAccessVBAリファレンスを参照しました)もVB.netも同じのようですが、.netの方には自動処理(本来の動作)を無効にするために(?)IsInputKey メソッドをオーバーライドしろと記述がありますが、VBAの方には特に記述がなかったので、詳細不明です。
以下その解説を転載します。
キーボード イベントをフォームでだけ処理し、そのイベントを他のコントロールでは受け取らないようにする場合は、フォームの KeyPress イベント処理メソッドの KeyPressEventArgs.Handled プロパティを true に設定します。Tab キー、Enter キー、Esc キー、方向キーなどは、コントロールによって自動処理されます。これらのキーで KeyDown イベントを発生させるには、フォーム上の各コントロールで IsInputKey メソッドをオーバーライドする必要があります。IsInputKey のオーバーライドのコードは、特殊なキーのいずれかが押され、そのキーが true の値を返したかどうかを判断する必要があります。
文中の「これらのキー」にPageUp/PageDownはふくまれます。
以上参考までに。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VB】タブ切り替え時のイベント
-
コンボボックスにキー入力をさ...
-
KEYPREVIEW=TRUEについて。意味...
-
特定のキーを押すまでループさ...
-
タブキー押下時のイベントをひ...
-
Visual Basic 6.0 コンボボック...
-
(VBA)チェックボックスのclick...
-
VB.NETでフォームがない...
-
Excel VBA マクロ実行中のみテンキ...
-
VB6で電卓を作っているのですが...
-
VB.NETのDropDownListをReadOnl...
-
コンボボックス選択後に非アク...
-
VB IEブラウザへのキーイベント...
-
コントロールキーが押されたキ...
-
キーイベントを擬似的に発生さ...
-
一定時間操作されないと自動で...
-
NULLで検索を行ったときは全件...
-
コマンドボタン(入力)をクリッ...
-
フォーカスについてお教えください
-
矢印キーイベントの封印。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB】タブ切り替え時のイベント
-
タブキー押下時のイベントをひ...
-
Visual Basic 6.0 コンボボック...
-
Access データ表示 完了時のイ...
-
VB.NETのDropDownListをReadOnl...
-
KEYPREVIEW=TRUEについて。意味...
-
テキストボックスの入力文字を1...
-
(VBA)チェックボックスのclick...
-
Excel VBA マクロ実行中のみテンキ...
-
特定のキーを押すまでループさ...
-
VB.NETでフォームがない...
-
コンボボックスにキー入力をさ...
-
キーイベントを擬似的に発生さ...
-
IEで、BackSpaceで「戻る」機能...
-
フォーカスについてお教えください
-
VB6で電卓を作っているのですが...
-
VB IEブラウザへのキーイベント...
-
一定時間操作されないと自動で...
-
GetKeyStateについて
-
WPFでの時刻入力コントロールに...
おすすめ情報