• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VB.NETでボタンクリックイベントで次のコントロールへ)

VB.NETでボタンクリックイベントで次のコントロールへ

このQ&Aのポイント
  • VB開発初心者のため、VB.NETでWindowsMobile5.0開発をしています。タブキーでコントロールを移動させるために、ボタンクリックイベントで次のコントロールにフォーカスを移動させたいと思っていますが、うまくいきません。ActiveControlを使用した方法は.NETCONPACTFreameWorkではサポートされていません。他に良い方法はありますか?
  • VB開発初心者のため、VB.NETでWindowsMobile5.0開発をしています。タブキーでコントロールを移動させるために、ボタンクリックイベントで次のコントロールにフォーカスを移動させたいと思っていますが、うまくいきません。ActiveControlを使用した方法は.NETCONPACTFreameWorkでは使えません。他に有効な方法はありますか?
  • VB開発初心者のため、VB.NETでWindowsMobile5.0開発をしています。タブキーでコントロールを移動させるために、ボタンクリックイベントで次のコントロールにフォーカスを移動させたいと思っていますが、ActiveControlを使用した方法は.NETCONPACTFreameWorkでは利用できません。他の方法はありますか?

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

> ctlPrevはプライベート変数なので これではダメですね 『プライベート変数』という表現もおかしいと思います 本来は『ローカル(局所)変数』とすべきでしょう 『フォームクラスのスコープを持つ変数』としてctlPrevを宣言しましょう PublicでもPrivateでもProtectedでも構いません

glee_sss
質問者

お礼

早速の回答ありがとうございます。 下記のように記述しうまく行きました。 Public Class SetForm Public ctlPrev As Control Private Sub TextBox_LostFocus(ByVal sender As Object, ByVal e As EventArgs) Handles TextBox1.LostFocus, TextBox2.LostFocus, TextBox3.LostFocus, TextBox4.LostFocus, TextBox5.LostFocus, TextBox6.LostFocus 'MessageBox.Show("LostFocusイベントが発生しました。") ctlPrev = CType(sender, Control) End Sub お陰様でいつも助かっております。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

LostFocusイベントが発生しいた時点でフォーカスを持っているのは引数で示されたSenderオブジェクトになると思います Me.SelectNextControl( Sender, True, True, True, True ) でいいように思いますが これでは支障が出るのでしょうか?

glee_sss
質問者

お礼

回答、誠にありがとうございます。 自分の考え方を纏めてみます。 LostFocusイベントで TextBox1コントロールをctlPrevに格納し、 ボタンクリックイベントで Me.SelectNextControl(ctlPrev , True, True, True, True) と考えて下記のように記述しましたがctlPrevはプライベート変数なのでボタンクリックイベントで使えませんでした。 この考え方で正しいでしょうか? またこのような場合どうすればいいんでしょうか? 初歩的な質問かもしれませんがご教授のほどよろしくお願いします。 Private Sub TextBox1_LostFocus(ByVal sender As Object, ByVal e As EventArgs) MessageBox.Show("LostFocusイベントが発生しました。") Dim ctlPrev As Control ctlPrev = CType(sender, Control) End Sub Private Sub Button51_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button51.Click Me.SelectNextControl(ctlPrev , True, True, True, True) End Sub

すると、全ての回答が全文表示されます。
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

フォームクラスの変数に dim ctlPrev as Control を追加 フォーカスを制御したいコントロールの LostFocusイベントを処理して ctlPrev = CType(Sender,Control) としておきます 次への処理で Me.SelectNextControl( ctlPrev, True, True, True, True) としてやればいいのではないでしょうか ActiveControlを使ってボタンClickイベントでの処理ではそのボタンの次のTabStopのコントロールにしか移動できません Clickした時点でActiveControlが移動してしまうため …

glee_sss
質問者

お礼

いつもお世話になっております。 LostFocusを行って次の処理を考えておりますが、 現在のFocusの位置を知るにはどうすればいいんですか? Me.SelectNextControl(”現在のフォーカス位置”, True, True, True, True) とすれば次のコントロールへFocusが移動するはずですが・・・

すると、全ての回答が全文表示されます。

関連するQ&A