(VB.NET、WinXP)
はじめまして、うまく(質問を)伝えられるか不安ですがよろしくお願いします。
現在フォーカスを持つコントロールの1つ前にフォーカスを持っていた
コントロールを取得とゆうか判別する方法はあるでしょうか?
少し具体的に説明させていただきますと…
ある登録画面でデータを入力中に、戻る・終了といった類のボタンを
押下し「ホントに戻って(終了して)いいか?」的なメッセージが表示
され「いいえ」を選択した場合、さっきまで入力してた入力欄に
フォーカスを戻す。とゆう事をしたいのですが
"さっきまで入力してた入力欄"を判別する方法はないか?
と思い質問させていただいた次第です。
えと・・・ねねと申します。
私も初めて間なしですが、参考になればと思います。
入力欄といいますとテキストを連想させますが、コントロール自体を
出来るだけ配列にし、フォーカスを取得した時にコントロール名も取得しておき、「いいえ」選択時に
コントロール名.SetFoucus
とすれば可能ではないでしょうか??
コントロール名は
Private StrPar as String
など、プライベートな変数に覚えさせればと思います。
ねねさん、どうもです。
実は私も、VB.NETは間もないですがその前の仕事で半年ほどVB6.0を
使用していたことがあるので、コントロール配列の事も多少は頭を
よぎったのですが、VB.NETにはコントロール配列がないようで…
書込み後も色々調べてみたところ、変わりにAddHandlerなるものが
使えないかな?と検討中です。入力欄となる全コントロール(主に
TextBoxですがComboBox等も混じってます)のLostFocusイベントを
1つのプロシージャに関連付けて、ねねさんも仰っていたとうり
プライベート変数に覚えさせておき、コントロール名.Focus
と、ここまでは目論んでみたんですが…
具体的な使用法とゆうか、コーディングの仕方とゆうか、ヘルプ等
も見てはいるんですが悪戦苦闘してます。もちろん自分で解決できる
よう頑張りますが、引き続きアドバイス等いただければ幸いですm(__)m
ボタンを押して、ボタン処理後に元のコントロールにフォーカスを
戻すんですよね。
それならボタン側に実装した方が楽なような気がします
1.ボタンのMouseEnterイベント
現在のアクティブコントロールを保存する
2.ボタンのClickイベント
処理後に保存していたコントロールをアクティブコントロールとする
[VB.NET]版のコントロール"の"配列での[VB6.0]時代のコントロール配列の
代用に関しては過去ログにあります。
過去ログ検索『コントロール配列』でどうぞ。
>書込み後も色々調べてみたところ、変わりにAddHandlerなるものが
>使えないかな?と検討中です。
サンプルが必要ならヘルプ又は過去ログ検索『AddHandler』でどうぞ。
ただ、数十個くらいの同じクラスのコントロールのイベントなら簡単に
Handles の後にイベントを並べてやってもいいと思いますが…。
ボタン以外の Enter イベント辺りでコントロールを変数に覚えて
おいてもいいでしょう。色々と方法がありそうです。
medakaさん、どうもです。
半年ほど経験したVB6の頃からMouse〜的なイベントはあまり使った事が
なかったので全く気が回りませんでした。すごくいい方法だなぁと感心
いたしました。是非採用させていただきます。
特攻隊長まるるうさん、どうもです。
>ただ、数十個くらいの同じクラスのコントロールのイベントなら簡単に
>Handles の後にイベントを並べてやってもいいと思いますが…。
確かにこちらの方が全然簡単で私レベルでもすぐ理解できました。
過去ログ検索も含め、他スレ同様の的確かつ解り易い回答感謝です。
.NET FW 的には、Validating イベントの Cancel でやって欲しいところです。
ちなみに前のコントロールの保持自体は、UpdateDefaultButton などをオーバーライドすれば可能です。
Enter イベント時に保持して、Validating 時に補足も可能ですが、
イベントハンドラを漏れなく設定しなければなりません。
ツイート | ![]() |