- - PR -
複数タブのショートカットキー認識方法
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-07-27 10:19
はじめまして。教えて下さいませ。
現在VB.NETにて複数タブを使用したアプリケーションを作っています。 この複数タブの中にはそれぞれ「登録(&S)」「削除(&A)」という同じ機能の ボタンがあります。 上記のショートカットキーを動作させたいのですが、それぞれのタブに同じボタンが 存在する為に「どのタブのどのボタンか」を認識させないといけないようです。 私がやろうとしている方法は 1.どのショートカットキーか 2.現在アクティブなタブがどれか 3.アクティブなタブ+ショートカットキーの場合にそれぞれの処理を行う この3つを行いたいのですが、いまいち上手くいきません。 良い方法がありましたら教えていただけたら幸いです。 | ||||||||||||
|
投稿日時: 2004-07-27 12:22
KeyPressイベントで監視すればいけそう。
TabControl#SelectedIndexを調べれば幸せになれます。
後は、単なる場合わけを行うだけ。 また、何がうまくいかないのかを、詳細に記述し、 その部分を抜き出した、サンプルコードを提示すれば、もっと適切な回答が得られることでしょう。 | ||||||||||||
|
投稿日時: 2004-07-27 15:32
返信ありがとうございます。
まず前提問題から引っかかっています・・・。 ・KeyPressのどこで行うべきか Form_KeyPressで記述をしても実行時にこの処理を抜けてくれません。 Tabの大元(?)のKeyPressとしても同じでした。 まず処理内容をどのコントロールのイベントに記述すればいいのかがわかりません。 ちなみに記述で考えていたのが Private Sub Form_KeyPress1(〜〜〜〜) Handles MyBase.KeyPress Dim ctrl as control If e.KeyChar = Chr(Keys.Alt And Keys.A) Then For Each actCon In Me.Controls If TypeOf ctrl Is TabControl Then If actCon.TabIndex=1 Then それぞれの処理 Else VB.NET初心者ですのでこんな事くらいしか思い浮かばず これが合ってるのかすらわからないのですが・・・。 もし、よろしければ例など教えていただけたら幸いです。 | ||||||||||||
|
投稿日時: 2004-07-27 17:51
自己レスです。
tabcontrolのkeydownにて、処理は通りました。 ところが、ALT+Aで認識して欲しい場所が ALTでこの処理が動いてしまい、ALT+Aという認識ができません。 下がコードです Private Sub Tabcontrol_KeyDown(〜〜〜〜) Handles MyBase.KeyDown Dim cls as form1 If e.KeyCode = Keys.Alt and e.KeyCode = Keys.A Then If TabControl.SelectedTab is タブの名前 Then cls.buttn登録_Click(sender,e) --以下対応した処理が続く | ||||||||||||
|
投稿日時: 2004-07-27 23:53
こんばんは。
ControlクラスのModifierKeysコントロールを使用することで解決できるのではないでしょうか? | ||||||||||||
|
投稿日時: 2004-07-28 11:36
ModifierKeysコントロールを使用してみましたが、やはり上手くいきません・・・。
やはりALTキーだけ、Aキーだけ、という判断になってしまいます・・・。 | ||||||||||||
|
投稿日時: 2004-07-28 12:21
こんにちは。
ALTが押されたどうかを e.KeyCode = Keys.Alt で判定してますが、 e.Alt = true にしてみてはどうでしょう? 参考 | ||||||||||||
|
投稿日時: 2004-07-28 13:30
こんにちは。
Qooさんの意見を取り入れてテストしてみたところ出来ましたよ。 ModifierKeysをどのように使われてますか? |