- PR -

複数タブのショートカットキー認識方法

投稿者投稿内容
ちづる
ベテラン
会議室デビュー日: 2004/07/27
投稿数: 72
投稿日時: 2004-07-27 10:19
はじめまして。教えて下さいませ。

現在VB.NETにて複数タブを使用したアプリケーションを作っています。
この複数タブの中にはそれぞれ「登録(&S)」「削除(&A)」という同じ機能の
ボタンがあります。
上記のショートカットキーを動作させたいのですが、それぞれのタブに同じボタンが
存在する為に「どのタブのどのボタンか」を認識させないといけないようです。
私がやろうとしている方法は

1.どのショートカットキーか
2.現在アクティブなタブがどれか
3.アクティブなタブ+ショートカットキーの場合にそれぞれの処理を行う

この3つを行いたいのですが、いまいち上手くいきません。
良い方法がありましたら教えていただけたら幸いです。
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2004-07-27 12:22
引用:

1.どのショートカットキーか


KeyPressイベントで監視すればいけそう。

引用:

2.現在アクティブなタブがどれか


TabControl#SelectedIndexを調べれば幸せになれます。

引用:

3.アクティブなタブ+ショートカットキーの場合にそれぞれの処理を行う


後は、単なる場合わけを行うだけ。

また、何がうまくいかないのかを、詳細に記述し、
その部分を抜き出した、サンプルコードを提示すれば、もっと適切な回答が得られることでしょう。
ちづる
ベテラン
会議室デビュー日: 2004/07/27
投稿数: 72
投稿日時: 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
投稿数: 72
投稿日時: 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/02/19
投稿数: 123
投稿日時: 2004-07-27 23:53
こんばんは。

ControlクラスのModifierKeysコントロールを使用することで解決できるのではないでしょうか?
ちづる
ベテラン
会議室デビュー日: 2004/07/27
投稿数: 72
投稿日時: 2004-07-28 11:36
ModifierKeysコントロールを使用してみましたが、やはり上手くいきません・・・。
やはりALTキーだけ、Aキーだけ、という判断になってしまいます・・・。
Qoo
大ベテラン
会議室デビュー日: 2003/04/08
投稿数: 121
投稿日時: 2004-07-28 12:21
こんにちは。

ALTが押されたどうかを e.KeyCode = Keys.Alt で判定してますが、
e.Alt = true にしてみてはどうでしょう?


参考
カウンター
大ベテラン
会議室デビュー日: 2004/02/19
投稿数: 123
投稿日時: 2004-07-28 13:30
こんにちは。

Qooさんの意見を取り入れてテストしてみたところ出来ましたよ。

ModifierKeysをどのように使われてますか?

スキルアップ/キャリアアップ(JOB@IT)