• 締切済み

UserControl内の複数のTextBoxでKeyDownイベントが使えない

VB2005の初心者です。 色々調べたつもりなのですが解らなくてよろしくお願いします。 フォームのTab移動を[Enter]きーで移動するようにしているのですが UserControlに複数のTextBoxを配置しUserControlを作成したものを、フォームに配置するとKeyDownイベントが取得できないというか、フォームに配置したTextBoxなどにフォーカスが移動してしまいます。 UserControl内のTextBoxのTabIndex順に移動させる方法などご存知の方いらっしゃいましたらご教授願えないでしょうか。 ProcessDialogKeyのオーバーライト辺りまでは調べたのですがよく解らなくてお願いします。

みんなの回答

回答No.1

単にフォームにテキストボックスを貼って、フォーカスを 移動するなら、 Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown If e.KeyCode = Keys.Enter Then ................... Else .................... End If End Sub でおkでは?????? 意味が違うのかな????????

wingtodo
質問者

お礼

回答ありがとうございます。 フォームにTextBoxなどを配置して移動することはできているのですがUserControlに複数のTextBoxを配置して作成したUserControlをフォームに配置した場合の移動がうまくいかないのです・・・。

関連するQ&A

  • コマンドボタンのEnterイベント後に、フォーカスを移動したい。

    コマンドボタンのEnterイベント後に、フォーカスを移動したい。 フォームに「TextBox1」(TabIndex=0)「TextBox2」(TabIndex=1)「CommandButton1」(TabIndex=2)の3つのコントロールがある場合。 CommandButton1がクリックされた場合も、TextBox2からCommandButton1に、タブキーまたはエンターキーで、フォーカスが移った場合にも、同じ処理を行い、処理結果によってTextBox1やTextBox2にフォーカスを移したいと考えています。 以下のようなサンプルを作成しました。 Private Sub CommandButton1_Enter() CommandButton1_Click End Sub Private Sub CommandButton1_Click() MsgBox ("OK") TextBox2.SetFocus End Sub この場合、CommandButton1_Enterのイベントが起こった場合、CommandButton1_Click()のTextBox2.SetFocusは効きません。 (正確には、CommandButton1_Enterイベントが終わった時点で無効でしょうか。) Enterイベントは、フォーカスが移動する前に発生するため、このイベントが終わった後に、そもそもの動作に戻り、フォーカス移動が発生してしまうからなのだと思っております。 要は、コマンドボタンにタブキーやエンターキーでフォーカスしても、コマンドボタンをクリックしたのと同じ処理を行い、所定の位置にフォーカスを持っていきたいのですが、どのように行えば良いか、わからない状況です。 よろしくお願いいたします。

  • SSTABでのKEYDOWNイベント

    VB6・SP5で開発を行っています。 FormのKEYDOWNイベントでPageUp・PageDownの押下の際に、 SSTAB上のアクティブなTABをずらす処理を行おうとしています。 問題はSSTAB上にフォーカスが移った直後だけ、 KEYDOWNイベントが2回実行されてしまうというものです。 KEYUPについても同様でした。 このような現象をご存知の方、 対処方法をお教えくださる方がいらっしゃいましたらよろしくお願いします。 ちなみにモジュール変数等のフラグはなるべく使用したくありません。

  • keydownイベントを発生で他のフォームで受信

    VB初心者です。 よろしくお願いします。 バーコードリーダーで読み込んでtextboxに表示させる仕組みを作りましたが、バーコードリーダーが ないのでバーコードリーダーを読み込んだように疑似的にできるようなことを考えています。 考えとしては バーコードを読み込んで表示させる:フォームA  ・keydownイベントを受っとる  ・textboxに読み込んだ値を表示 バーコードを読み込んだように疑似的に動作する:フォームB  ・keydownイベントを発生させる  ・フォームBに入力した値をフォームAに渡す フォームAは作成できましたが、フォームBのようなことはできるのでしょうか。 どのようなイベントを使用したらいいかなど、アドバイスをいただけないでしょうか。 環境:VB2008 OS:Windows7

  • keydownイベント

    ユーザーフォーム上に複数のテキストボックスが設置されていて それらに対して同一のkeydownイベントで処理することは可能でしょうか。 keudownイベントの内容は全く同一の処理内容です。 テキストボックスが30個設置されているので一つ一つ書くのが面倒くさくて・・・

  • keydownイベントについて

    VB6.0について質問です。 現在フォームが大きいのでピクチャーにスクロールバーをつけて対応しています。 フォームでキーボードの矢印ボタンを押すことでも上下の移動を可能にしたいのですがうまくいきません。 フォーカスがチェックボックスやオプションボタンにあるとキーダウンがきいてくれません。。。 キーダウンイベントでどのような処理を行えば実現できますか?

  • VBAでのユーザーフォーム上でのタブオーダーの移動の方法

    やりたい事を以下に書きます。  ユーザーフォームで入力用のTEXTBOXがいくつかあり、TABINDEXが最初のTEXTBOXから順に入力していきます。  1つのTEXTBOXに入力完了後した場合、TABキーまたは、ENTERにより次のTEXTBOXにフォーカスが移動し、最後にコマンドボタンにを押すと入力が完了するというフォームを作っています。  ただし、最初のTEXTBOXに『99』を入力すると、途中のTEXTBOXへのフォーカスの移動はしないで最後のコマンドボタンにフォーカスが移動するようにしたいと考えています。 問題点を以下に書きます。  TEXTBOXの入力完了を現在、「AfterUpdate」イベントでつかまえて、TEXTBOXの値を取得し、その値が『99』だった場合、コマンドボタンにフォーカスを移動するようにコーディングしています。 こんな感じです。(かなり省略していますが、) Private Sub TextBox1_AfterUpdate() If TextBox1.Value = "99" Then CommandButton1.SetFocus Exit Sub End If End Sub この用にコーディングすると、TABINDEXが二つ後ろのTEXTBOXが入力待ち状態となってしまいます。 たとえば TEXTBOXが3つコマンドボタンが1つのフォームだと、 TEXTBOX1に『99』と入力し、上記のコーディングだと一度コマンドボタンにフォーカスが移動したあと、最後にTEXTBOX3にフォーカスが移動して入力待ち状態となる感じです。 色々試しましたが、解決方法が見つかりません。知っている方いましたら、教えてください。

  • フォーカスを移動させる?設定

    人から頂いたファイルを改良するように上司に指示され困っています。。。 頂いたファイルがどう言ったものかと言いますと・・・ 1.TextBox1へは6桁の数字を入力します。 2.CommandButton1を押すと6桁の数字と同じファイル名のイメージが表示されます。 ・・・と言う、操作は決して難しいものではないのですが、 このTextBox1やCommandButton1はフォームではなくてシート上にあります。 これが私にはこの上ない困りものなのです。 何をしたいかと言いますと・・・ ◎Enterを押すとTextBox1からCommandButton1へフォーカスが移動し、CommandButton1が押せる。 ・・・と言うようにしたいのです。 これがフォームで作られていれば「TabIndex」で設定できるのですが、フォームでないものをいじったことがなくて大変困っています。 (現時点ではEnterを押してもTabを押しても反応せず、マウスでCommandButton1を押さなくてはいけません。) よろしくお願いします。

  • Vba UserForm SetFocus

    ExcelのVbaでUserForm上に英単語のタイピング練習のソフトを作ろうとしていますが、うまくいきません。コントロールのイベントについての理解が不足しているのが分かりました。 ユーザフォーム上の複数のテキストボックス間のフォーカスの移動について教えて下さい。 UserForm1にテキストボックスを3つ、コマンドボタンを1つ配置しました。それぞれTextBox1、TextBox2、TextBox3、CommandButton1とします。 Private Sub CommandButton1_Click() TextBox3.SetFocus ・・・(1) End Sub Private Sub TextBox3_Enter() MsgBox "In TextBox3" TextBox2.SetFocus ・・・(2) End Sub 各TextBoxのTabStopプロパティは「True」、「TabIndex」は番号順になっています。 コマンドボタンのTabStopプロパティは「False」にしています。 フォームを表示し、コマンドボタンをクリックするとエラーが発生します。 (2)の実行の後(?)、(1)がエラー表示されます。 各イベントの発生のタイミング、連鎖、終了等の理解が不足していて、その理由がよく分かりません。どなたか教えていただけないでしょうか。よろしくお願いします。

  • TabIndex順にタブ移動しない・・

    VB.NETです。 TextBoxなどのTabIndexに0~35までのTabIndex番号を付けていますが、タブ移動させたときに何故かTabIndex番号順に進んでくれません。 実行させた際に、最初にカーソルのある位置が、TabIndex=15のTextBoxになってしまっています。 そこからタブ移動させると、15, 16, 17, 18, ・・・・・・35まで進み、次は頭から(TabIndex=0)から進んで、TabIndex=14で止まります。 タブ止めは、以下の質問で解決し、実現しています。 http://okweb.jp/kotaeru.php3?q=1377546 最初は、正常にタブ移動(0~35)していたのですが、TextBoxを移動させたり作り直したり再編集しているうちに、気づくとおかしな動きになっていました。 ちなみに、TabIndex0~14までのタブは、Container1上に貼り付けて、TabIndex15~35までのタブは、Container2上に貼り付けています。 Containerも、TextBoxも、Form1上にあります。 原因がわかる方いらっしゃいましたら、アドバイスいただけると助かります。 ※Containerとは、InputManのカスタムコントロールで、標準のPanelコントロールの高機能版みたいなものです。

  • VB6.0 KeyDownイベントの対応

    VB6.0を使ってプログラム中ですが、下記の  Command10_KeyDown で、複合キー「 Ctrl + ↓」 だとイベント KeyDown を受信できるのですが、単純な キー「↓」だと、イベント KeyDown を受信でず、他のボタンにフォーカスが移ってしまいます。 Comman10_GotFocus に何か対応策を入れて、単純な キー「↓」のイベント KeyDown を受信する方法はないでしょうか? Private Sub Command10_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 40 Then execsub001() End If End Sub Private Sub Commnad10_Click() execsub001() End Sub Private Sub Comman10_GotFocus() 上記問題への対応策を此処に記述したい End If Private Sub execsub110() 内容は省略 End Sub