タブ切替ボタンのフォーカス移動について

このQ&Aのポイント
  • VisualStudio2005,Vistaで開発している際に、タブコントロールのタブ切替ボタンにフォーカスが当たっている状態で左右キーを押すと、隣のボタンにフォーカスが移ると共にアクティブなタブが変更されます。しかし、Tabキー以外の下キーやEnterキーでも同じ動作を実現したいと考えています。
  • しかし、テキストボックス等ではkeypressイベントやkeydownイベントでフォーカス制御ができましたが、タブコントロールのタブページではこれらのイベントが発生せずうまくいきません。また、タブコントロール本体ではイベントは起きますが、コンボボックスの内容を変更するために押した下キーにも反応してしまいます。
  • この問題に対して、何か解決方法やご教示いただけると幸いです。
回答を見る
  • ベストアンサー

タブ切替ボタンからのフォーカス移動について

いつもお世話になっています。 VisualStudio2005,Vistaで開発しています。 タブコントロールのタブ切替ボタンにフォーカスが当たっている状態で左右キーを押すと、 隣のボタンにフォーカスが移ると共にアクティブなタブが変更されます。 その状態でTabキーを押すと、該当タブページの先頭オーダーを持つコントロールにフォーカスが移りますが、 これと同じ動作を下キー、Enterキーで実現したいと考えています。 テキストボックス等ではkeypressイベント、keydownイベントでフォーカス制御ができましたが、 どうもうまくいきません。 個々のタブページでは両イベントが発生せず、タブコントロール本体ではイベント自体は起きるものの、 コンボボックスの内容を変更するために押した下キーにすら反応してしまいます。 何か良い解決方法はありませんでしょうか。 皆様のお知恵をお貸しいただけましたら幸いです。

質問者が選んだベストアンサー

  • ベストアンサー
  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.1

> タブコントロール本体ではイベント自体は起きるものの、 > コンボボックスの内容を変更するために押した下キーに > すら反応してしまいます。 別にそれでも何の問題も無いのでは? Me.ActiveControl.Name とかと組合せで判断するとか、 普通に思い浮かびますが。 # そもそもイベントとはWindowメッセージを自前の処理で # 振り分けて起こしているわけだから、自分がイベントを # 起こす立場で考えれば、イベントの起こってる場所を # 特定する方法を探す発想はさほど難しくないはず。

関連するQ&A

  • タブダイアログのフォーカスの移動について

    タブダイアログを使った場合の フォーカスの移動についての質問です。 状態としましては フォームにタブ数3のタブダイアログがあり、 それぞれのタブに3つテキストボックスがあります。 また、タブダイアログとは別にフォーム上に 閉じるボタンが1つあります。 現在1つ目のタブの1つ目のテキストボックスに フォーカスがあり、Tabキーでフォーカスを 移動させていくのですが、 3つ目のテキストボックスでtabキーを押すと フォーカスがどこに行ったのか 行方不明になってしまいます。 なぜか2つ目と3つ目のタブの 3つ目のテキストからは 閉じるボタンへフォーカスが移動するのですが、 1つ目のテキストだけが行方不明になってしまいます。 (shift+tabで戻ってきません) また、3つ目のタブのキャプションからの フォーカス移動も行方不明となってしまうます。 タブインデックスは タブダイアログボックスが0 1つ目のタブの1つ目のテキストが1 1つ目のタブの2つ目のテキストが2 1つ目のタブの3つ目のテキストが3 2つ目のタブの1つ目のテキストが4        ・        ・ 3つ目のタブの3つ目のテキストが9 閉じるボタンが10 となっています。 タブダイアログのフォーカス移動を制御するには どうしたら良いのでしょうか? また、行方不明になってしまうフォーカスの 現在位置を見つけるようなことはできますでしょうか? よろしく回答のほどお願いします。

  • 画像をボタンのようにフォーカス対象にする。

    画像をボタンのようにフォーカス対象にする。 現在、画像にonclick,onmouseover,onmouseoutイベントを設け、 ボタンとして機能を持たせて、html画面を作成しております。 htmlソース <IMG id="logout_btn" onmouseover="Onmouseoverlogout();"  onmouseout="Onmouseoutlogout();"  onclick="clicklogout();"  img src="images/logout.gif"  width="100" height="27" border="0" name="logout_btn"> これを、キーボード操作だけでも押せるようにしたいのです。 この目的を果たす為には、 1.Tabキーが押された時に移り変わるフォーカス対象の中に加える (画面の中には他に幾つかのテキストボックスやコンボボックスがあります) 2.Enterキーが押された時のイベントを設定する。 この2項目を実現する為にはどうすればよいのでしょう? 特に2は、Enterキーを押した時にフォーカス状態にある対象を判別する ⇒それによって実行する関数を選ぶif分岐を作る、といった手順が必要かなと想像しています。 (フォーカスされている画像が、「ログイン」ボタンだったらSubmit関数を呼び、  「リセット」ボタンだったら全項目をブランクにするコードを走らせる、等…) フォーカス対象、などのキーワードで検索しても別の事例が検索できてしまい なかなか解決できません。 Web製作1ヶ月の初心者で、基本的な事を聞いてしまっているかもしれませんが ご助力いただけましたら幸いです。

  • タブキー押下時のイベントをひろいたい。

    テキストボックスにフォーカスがあり、TABキーが押された時のイベントをひろいたいのですが、KeyPressもKeyDownもイベントが発生しません。 (If KeyCode = vbKeyTab Then  MsgBox "タブキー" End If  If KeyAscii = vbKeyTab Then ~ のようなコードを記述してもメッセージが表示されない) ヘルプにはKeyDownでは発生しないという記述がありますが、KeyPressではイベントがひろえるようなことが書いてあるのにひろえないので困っています。 なにかよい方法はありませんでしょうか。 わかりにくい説明で申し訳ありませんが困ってます。 宜しくお願いします。

  • Tabでのフォーカス(win32)

    edit = CreateWindow( TEXT("EDIT") , NULL , WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_NUMBER | ES_LEFT , 0 , 0 , 35 , 18 , hWnd , (HMENU)1 , ((LPCREATESTRUCT)(lParam))->hInstance , NULL ); でエディットコントロールを作成しました。 フォーカスがエディットコントロールにある時、TABキーで フォーカスをなくしたいのですが、どうしたらよいでしょうか? デバッガーで追ってみると、WM_KEYDOWNがウィンドウに送られていませんでした。

  • tabキーによるフォーカスをさせないようにするには?

    tabキーでフォーカスを移動すると、ボタンの役割を持っているムービークリップは黄色でマークされますが、これをさせないためにはどのようなスクリプトを用意しておけばいいのでしょうか? ただ黄色いマークをさせないだけなく、フォーカスの移動自体をしたくないのです。 よろしくおねがいします。

    • ベストアンサー
    • Flash
  • Tabキーを拾えるVB2005カスタムコンボを作りたいです

    こんにちは。 現在、VB2005をつかって開発をしています。 作りたいものはTabキーやShiftキー押下時にKeydownでイベントを取得できる カスタムコンボボックスなのですがどうも上手くいきません。 どなたかご助言をよろしくお願いします。

  • キーを離した際、、、

    超初心者です。 ムービークリップタイプのA、B、C、D、4つのボタンを作成しました。 マウスを各ボタン上に乗せると、色が変わります。 選ばれたボタンを、クリックすると、イベントが発生します。 これをTABキーと連動したいです。 TABキーが離された瞬間、次のボタンへフォーカスが移動する形で、ボタンを選び、そして、決めたボタン上でEnterキーを押したら、イベントを発生させたいです。 例として、最初TABキーを押したら、フォーカスがAボタンへ行きます。 次に、TABキーを離したら、AからBボタンへ行きます。 また、TABキーを離したら、今度は、BボタンからCボタンへ行きます。 この過程中、TABキーをずっと押したまま離さないと、フォーカスが移動しません。 アクションスクリプトのバージョンは2.0です。 こういうのって可能ですか? 可能ならば、ぜひよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • エディットでEnterキーでのTAB移動

    Win32APIを使ってプログラミングしています。 通常はTABでフォーカスを移動するのが良いと思うのですが、Enterキーで移動させたいと思います。 ところが、一行のエディットだとEnterキーを押すとビープ音が鳴ってしまいます。 フォーカス移動はできるのですが、ビープ音を鳴らないようにするにはどうすればいいのでしょう? 多分WM_KEYDOWNかWM_KEYUP、WM_CHARのどれかで書けばいいと思ってるんですが… よろしくお願いします。

  • フォーカスの移動

    IMEソフトキーボードのようなものを作っています。 フォーム1にテキストボックスがあり、フォーム2をソフトキーボード。というように作りたいと思っているのですが問題があります。 コマンドボタンを押すごとに1文字ずつ送るような作りになっているのですが、1文字ごとにテキストボックスからコマンドボタンにフォーカスが移るため、2文字以上の文字列の変換ができないのです。VB的に無理なのかもしれないですが、IMEソフトキーボードのようにテキストボックスにフォーカスをセットしたままの文字入力を出来ないでしょうか?ちなみにkeybd_eventを使っています。 時間がありましたら、ご教授のほどよろしくお願いします。

  • C# Enterキーの動作について

    お世話になります。 VC#2010にて、フォームにボタンを配置し、そのボタンに フォーカスがあるときにEnterキーを押下すると、そのボタンが 押されたことになってしまいますが、これをさせない方法は ありますでしょうか。 Enterキーは、フォーム側でKeyDown(KeyPress?)処理で 別に行いたいので、押下として反応してしまうと、KeyDownに 処理が飛ばなくなってしまいます。 それを回避する方法です。 何卒よろしくお願いいたします。

専門家に質問してみよう