VB開発初心者です。
VB.NETでWindowsMobile5.0開発してます。
.NETCONPACTFreameWork2.0です。
TABキーで移動するように
ボタンクリックイベントで次のコントロールへFocusを移動させたいのですがうまく行きません。
下記の記述すればOKだと思いましたが、
Me.SelectNextControl(Me.ActiveControl, True, True, True, True)
ActiveControlを.NETCONPACTFreameWorkがサポートしてませんでした。
ほかに良い方法ありませんでしょうか?
宜しくお願いします。
No.1
- 回答日時:
フォームクラスの変数に
dim ctlPrev as Control
を追加
フォーカスを制御したいコントロールの LostFocusイベントを処理して
ctlPrev = CType(Sender,Control)
としておきます
次への処理で
Me.SelectNextControl( ctlPrev, True, True, True, True)
としてやればいいのではないでしょうか
ActiveControlを使ってボタンClickイベントでの処理ではそのボタンの次のTabStopのコントロールにしか移動できません
Clickした時点でActiveControlが移動してしまうため …
いつもお世話になっております。
LostFocusを行って次の処理を考えておりますが、
現在のFocusの位置を知るにはどうすればいいんですか?
Me.SelectNextControl(”現在のフォーカス位置”, True, True, True, True)
とすれば次のコントロールへFocusが移動するはずですが・・・
No.2
- 回答日時:
LostFocusイベントが発生しいた時点でフォーカスを持っているのは引数で示されたSenderオブジェクトになると思います
Me.SelectNextControl( Sender, True, True, True, True )
でいいように思いますが
これでは支障が出るのでしょうか?
回答、誠にありがとうございます。
自分の考え方を纏めてみます。
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
No.3ベストアンサー
- 回答日時:
> ctlPrevはプライベート変数なので
これではダメですね
『プライベート変数』という表現もおかしいと思います
本来は『ローカル(局所)変数』とすべきでしょう
『フォームクラスのスコープを持つ変数』としてctlPrevを宣言しましょう
PublicでもPrivateでもProtectedでも構いません
早速の回答ありがとうございます。
下記のように記述しうまく行きました。
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
お陰様でいつも助かっております。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 英語 英文について教えて下さい。 2 2022/06/14 10:37
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Excel(エクセル) vba 複数の行を非表示の時コードのまとめ方 3 2022/11/17 15:01
- Visual Basic(VBA) VBAでシートの保護をかける際に「書式設定の変更」を有効にする 1 2023/04/17 18:18
- Excel(エクセル) EXCEL関数(数式)を教えてください 2 2022/06/08 18:32
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- PHP in_arrayについて教えて下さい。 1 2023/03/31 13:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
どこにもフォーカスを当てたくない
-
業務に差し支えのないテンキー...
-
他の人には声だして挨拶してる...
-
エクセルVBA テキストボックス...
-
矢印(左右)キーでイベントを...
-
コマンドボタンのEnterイベント...
-
Private Sub内でSubをCallしたい
-
VBでタッチパネルを・・・
-
MFCでコンボボックスを選択不可...
-
油性マジックの消し方
-
C# ReadOnlyのTextBoxで
-
炊飯器のセットの音と出来上が...
-
二台のノートパソコンを繋げて...
-
中古本の店名ハンコの消し方
-
GridViewでハイライトを使用し...
-
エクセルでチェックボックスの...
-
Verilog HDLで立下りと立ち上が...
-
ユーザーフォームのSetFocusが...
-
リコーダーのドがかすれてでま...
-
VBAのExitイベントについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
どこにもフォーカスを当てたくない
-
エクセルVBA テキストボックス...
-
他の人には声だして挨拶してる...
-
ユーザーフォームのSetFocusが...
-
炊飯器のセットの音と出来上が...
-
C# ReadOnlyのTextBoxで
-
業務に差し支えのないテンキー...
-
GridViewでハイライトを使用し...
-
コマンドボタンのEnterイベント...
-
矢印(左右)キーでイベントを...
-
油性マジックの消し方
-
OPPO A54 5Gを使っています。 ...
-
Accessの更新後処理で特定の条...
-
VBAでのユーザーフォーム上...
-
池袋サンシャイン通りでキャッ...
-
VBAのExitイベントについて
-
MFCでコンボボックスを選択不可...
-
中古本の店名ハンコの消し方
-
マイクラのマルチサーバーが起...
-
スプレットシートでフォーカス...
おすすめ情報