• ベストアンサー

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

タブダイアログを使った場合の フォーカスの移動についての質問です。 状態としましては フォームにタブ数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 となっています。 タブダイアログのフォーカス移動を制御するには どうしたら良いのでしょうか? また、行方不明になってしまうフォーカスの 現在位置を見つけるようなことはできますでしょうか? よろしく回答のほどお願いします。

  • soma3
  • お礼率94% (18/19)

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

  • ベストアンサー
  • 2ch
  • ベストアンサー率51% (64/125)
回答No.1

>フォーカスがどこに行ったのか行方不明になってしまいます。 カレントではないタブに乗ったテキストボックスなどに、フォーカスが移動しているため。 回避策 SSTab1_Clickのイベントで現在のカレントタブを認識し、全てのテキストボックスのTabStopの状態を切り替える。

soma3
質問者

お礼

早速の返事ありがとうございます。 回避策にて無事に希望通りの動きをしてくれました。 適切な回答どうもありがとうございました。

その他の回答 (1)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.2

フォーカスが移った時のタブの切り替えを面倒みるとか Private Sub Text1_GotFocus(Index As Integer) Select Case Index Case 0, 1, 2 SSTab1.Tab = 0 Case 3, 4, 5 SSTab1.Tab = 1 Case 6, 7, 8 SSTab1.Tab = 2 End Select End Sub

soma3
質問者

お礼

2chさんの回避策にて希望の動きを実現できましたが、 todo36さんの意見も参考にさせていただきます。 すばやい返答ありがとうございました。

関連するQ&A

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

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

  • フォーカスの順番移動

    VBAで今フォーム1にテキストボックス2つ コンボボックス3つ上から順にあるのですが エンターキーまたはタブを押すと上から順番にフォーカスを移動させたいので すが、どうすればいいのでしょうか?プロパティの設定でできるのでしょうか ?今はタブキーを押すとばらばらの順番でフォーカスが移動します。なぜでしょう? ちなみにコントロールの名前は上から TextBox1、TextBox2、ComboBox1、ComboBox2、ComboBox3です

  • フォーカスの移動

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

  • firefox フォームにフォーカス

    ページ内の上の方にフォームが一つ付いているページを10タブ開いているのですが、そのフォームにctrl+cで次々と貼り付けをしたいとおもっています。 アドオンでF3キーで次のタブへいけるようにしてあるのですが、次のタブへ行くとフォーカスがどこかへいってしまい、tabキーを7回押すと ページ内のフォームにフォーカスになります。これをショートカットキーか何かで一発でやりたいのですが、可能でしょうか?

  • [HTML]TABインデックスはいいけれど・・・。

    こんばんは。 HTMLでフォームを作った際、タグの中に TAGINDEX='x' と設定してやればその順番どおりに「TABキー」を押したらフォーカスが移動しますよね? 例えば5つのテキストボックスがあってそのうち3つに1,2,3とTABインデックスをつけたとします。その場合、最初の3回はその順番どおりにいき、次に押せば、TABインデックスがなく、先に表示されているテキストボックスにフォーカスが移動してしまいます。 私としては残りの2つはTABでフォーカスしてほしくないのです・・・でもマウスクリックではして欲しいのです。 つまり、フォーカスが来たからと言って違うテキストにフォーカスを移すというJavaScriptではダメです。マウスでクリックした場合も移動してしまうからです。 なんかいい方法ないですか?

  • Access フォーム上のタブ移動

    タブ移動について質問します。 フォーム上に検索ボタンがあり、検索ボタンを押すと、イベントプロシージャでデータを取得してきて、フォーム上のテキストボックスに結果を表示する仕組みをつくっています。 この検索ボタンを押した後、あるテキストボックスにタブ移動をしたいのですが、うまくいきません。現在、下記の状態です。 ・検索ボタンを押さずTABキーを押すと、正しくタブ移動する(プロパティのタブ移動順のとおり) ・コード上には「Me!テキストボックス名.SetFocus」を記述 試しに、「Screen.ActiveControl.Name」で確認したところ、移動させたいテキストボックス名が取得できました。また、検索ボタンを押してデータ表示後、別のウインドに切り替え、Accessの画面に戻ると、移動したいテキストボックスにカーソルが存在(点滅)しています。 この事から、タブ移動ができていないのではなく、検索ボタンを押してデータを表示すると、タブが正しく移動しているにもかかわらず、画面上で表示されていないの(点滅していないので入力も、そこからのタブ移動もできません)では?と思います。 「Repaint」などでいろいろ試行錯誤してみたのですが、解決できなかったので、質問をさせて頂きました。 検索ボタンを押した後、正しくタブ移動する方法を教えてください。 環境はAccess2010です。回答をお願い致します。

  • [Enter]エンターキーでカーソル移動する方法

    プログラム(VB.NET)初心者です。 どうぞよろしくお願いします。 フォームに複数のテキストボックスを配置しているのですが、 タブで次のテキストにフォーカスが移動するように [Enter]キー押下時もフォーカスを次のテキストに移動させたいのです。 色々試してみたものの、なかなかうまくいきません(><) どなたか、わかる方教えていただけたら幸いです。 サンプルソースがあると嬉しいです。 申し訳ありませんが、宜しくお願いします。

  • tabキーによるfocusの当たり方を制御したい

    こんにちは,よろしくお願いします。 formが設置してあるページで,tabキーを押すとfocusが移動しますが,この挙動が,ブラウザによって違うことに気づきました。 ドリームウィーバーで,レコードの挿入ウィザードを使って簡単にフォームを設置することができますが,たとえば,この単純なページをInternet Explorerで開いて,1回tabキーを押してみると,focusは,ブラウザのアドレスバーに行ってしまいます。しかし,Firefoxでは,フォームの1番目のテキストボックスにfocusが当てられ一番最後にブラウザのアドレスバーなどに行きます。また,OperaではFirefoxと同様にフォームの1番目のテキストから始まって,ブラウザにはfocusが渡りません。 FirefoxやOperaのようにフォームの1番目の項目からfocusがあたるようにしたいのですが,どのようにすればよいのでしょうか? gooやYahooを上記の3つのブラウザで開いてみると,必ず同じ挙動を示して,同じところからfocusが当たりますから,何らかの方法で制御する方法があるのだと思うのですが…。 tabindexを設定して,フォームの1番目の項目を1として,順に設定してみたりしたのですが,Internet Explorerでは,やはり一番先にブラウザにfocusが渡ってしまいました。 私の希望としては,Opera のように一切ブラウザにfocusが当たらないようにしたいのです。しかし,できないのであれば,Internet Explorerで一番最初にブラウザにfocusが当たらないようにする方法を教えていただきたいです。 当方,JavaScriptとPHPにてホームページを作成中です。よろしくお願いします。

    • ベストアンサー
    • HTML
  • ボタンのみにフォーカスを合わせたい。

    ボタンのみにフォーカスを合わせたい。 フォーム上に動的に作成したボタンをキー入力だけで操作したいのですが、方向キーを使ってカーソルを移動させるとどのボタンにもフォーカスが合わなくなります。 →キーを押してカーソルを移動させていくと端のボタンの上で→キーを押すとどこかへいってしまいます。 ■ □ □  □ ■ □ □ □ ■ □ □ □ よろしくお願いします。

  • VBAのフォーム カーソル移動

    VBAのフォームでテキストボックス(1)~テキストボックス(5) まで作ったとします。 カーソルの移動はtabindexの値を順番につければいいのですが、例えばENTERキーとTABキーを両方押したときは カーソルが一つ飛ぶ制御をしたいのですがどうすればいいでしょうか? つまり カーソルがテキストボックス(1)にいる状態でENTERキーとTABキーを同時に押せばカーソルがテキストボックス(3)に移動するようにしたいのですが、お願いします