フォーカスを持っていたコントロールを判別する方法?

解決


はまー  2005-08-19 02:13:18  No: 124226

(VB.NET、WinXP)
はじめまして、うまく(質問を)伝えられるか不安ですがよろしくお願いします。

現在フォーカスを持つコントロールの1つ前にフォーカスを持っていた
コントロールを取得とゆうか判別する方法はあるでしょうか?

少し具体的に説明させていただきますと…
ある登録画面でデータを入力中に、戻る・終了といった類のボタンを
押下し「ホントに戻って(終了して)いいか?」的なメッセージが表示
され「いいえ」を選択した場合、さっきまで入力してた入力欄に
フォーカスを戻す。とゆう事をしたいのですが
"さっきまで入力してた入力欄"を判別する方法はないか?
と思い質問させていただいた次第です。


ねね  2005-08-19 03:25:41  No: 124227

えと・・・ねねと申します。
私も初めて間なしですが、参考になればと思います。

入力欄といいますとテキストを連想させますが、コントロール自体を
出来るだけ配列にし、フォーカスを取得した時にコントロール名も取得しておき、「いいえ」選択時に

コントロール名.SetFoucus 

とすれば可能ではないでしょうか??

コントロール名は

Private StrPar as String

など、プライベートな変数に覚えさせればと思います。


はまー  2005-08-19 04:16:05  No: 124228

ねねさん、どうもです。

実は私も、VB.NETは間もないですがその前の仕事で半年ほどVB6.0を
使用していたことがあるので、コントロール配列の事も多少は頭を
よぎったのですが、VB.NETにはコントロール配列がないようで…

書込み後も色々調べてみたところ、変わりにAddHandlerなるものが
使えないかな?と検討中です。入力欄となる全コントロール(主に
TextBoxですがComboBox等も混じってます)のLostFocusイベントを
1つのプロシージャに関連付けて、ねねさんも仰っていたとうり
プライベート変数に覚えさせておき、コントロール名.Focus
と、ここまでは目論んでみたんですが…

具体的な使用法とゆうか、コーディングの仕方とゆうか、ヘルプ等
も見てはいるんですが悪戦苦闘してます。もちろん自分で解決できる
よう頑張りますが、引き続きアドバイス等いただければ幸いですm(__)m


medaka  2005-08-19 17:35:25  No: 124229

ボタンを押して、ボタン処理後に元のコントロールにフォーカスを
戻すんですよね。
それならボタン側に実装した方が楽なような気がします

1.ボタンのMouseEnterイベント
    現在のアクティブコントロールを保存する
2.ボタンのClickイベント
    処理後に保存していたコントロールをアクティブコントロールとする


特攻隊長まるるう  2005-08-19 18:07:09  No: 124230

[VB.NET]版のコントロール"の"配列での[VB6.0]時代のコントロール配列の
代用に関しては過去ログにあります。
過去ログ検索『コントロール配列』でどうぞ。

>書込み後も色々調べてみたところ、変わりにAddHandlerなるものが
>使えないかな?と検討中です。
サンプルが必要ならヘルプ又は過去ログ検索『AddHandler』でどうぞ。
ただ、数十個くらいの同じクラスのコントロールのイベントなら簡単に
Handles の後にイベントを並べてやってもいいと思いますが…。

ボタン以外の Enter イベント辺りでコントロールを変数に覚えて
おいてもいいでしょう。色々と方法がありそうです。


はまー  2005-08-19 20:12:56  No: 124231

medakaさん、どうもです。

半年ほど経験したVB6の頃からMouse〜的なイベントはあまり使った事が
なかったので全く気が回りませんでした。すごくいい方法だなぁと感心
いたしました。是非採用させていただきます。

特攻隊長まるるうさん、どうもです。

>ただ、数十個くらいの同じクラスのコントロールのイベントなら簡単に
>Handles の後にイベントを並べてやってもいいと思いますが…。
確かにこちらの方が全然簡単で私レベルでもすぐ理解できました。
過去ログ検索も含め、他スレ同様の的確かつ解り易い回答感謝です。


じゃんぬねっと  URL  2005-08-20 05:05:53  No: 124232

.NET FW 的には、Validating イベントの Cancel でやって欲しいところです。

ちなみに前のコントロールの保持自体は、UpdateDefaultButton などをオーバーライドすれば可能です。
Enter イベント時に保持して、Validating 時に補足も可能ですが、
イベントハンドラを漏れなく設定しなければなりません。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加