- PR -

TextBoxにデータを入力後、発生するイベントは?

投稿者投稿内容
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-11-14 10:34
引用:

だんじりさんの書き込み (2007-11-14 09:25) より:

最初は[Enter]キー以外を無視する方法にチャレンジしてみました。


ご説明ありがとうございました。 経緯はわかりました。

引用:

今後の課題1は、通常TextBoxに入力しEnterキーを押すと予測していますが、例外的には数字を入力した後にEnterキーを押さず、マウスで別のTexBoxをクリックしフォーカスを移動してしまうことも考えられます。この時「Enterキーを押した後に実行したい処理」が抜けてしまい問題と考え今後の課題として記述しました。(この処理には金額入力後のその時点における税額計算や誕生日入力の年齢計算などです)


だからこそ Validating イベントや Leave イベントに処理を実装すれば良いと書きました。

引用:

無事解決でき、ありがとうございました。


マウス クリックの問題も解決できたのでしょうか?

引用:

【続き】Jittaさんに伺いたいのですがTab移動の設定はどのようにすればいいので しょうか。TabIndex及びTabStopを設定してもtabが動作しません。

【追加修正】その後、tab動作はEnterキーを押すことでは動作せず、Tabキーを押すことで動作することが分りました。EnterキーにもTabキー同様の動作をさせる設定が出来るのでしょうか。


フォームで [Enter] キーが押された時にフォーカスを遷移させる [wankuma.com]

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
RUN
常連さん
会議室デビュー日: 2007/10/05
投稿数: 32
お住まい・勤務地: 東京都
投稿日時: 2007-11-14 19:42
ちょっとした発想の転換やきっかけと言った事で、実は簡単な事だったんだと言う事も多いと思うんだけど。

イベントの流れって言うものを、眺めてみた事はありますか?

全ての処理を1箇所でやる必要は無い。
しかし、全ての処理は1箇所に集約される事も有る。

今回の問題でいえば、
エンターキー押下後の処理を全て1箇所でやる必要は無い訳で。
それでいて、実処理部分については、1箇所に集めたいと言う事が考えを硬直させていると思う。

今、やろうとしている処理のどこまでが同時に行われなければいけない事なのかを1度整理してみると、意外と簡単な話だと思います。

KeyDownイベント時
押されたのがEnterキーだった場合、次のコントロールにフォーカスを移動させて、
それ以外の場合特に何もしない。

Validatingイベント或いはLeaveイベント時
実際に行いたい処理を行う。

イベントの流れとしては、

Enterキー押下 → KeyDownイベントにより次のコントロールにフォーカスが移動
Tabキー押下 → KeyDownイベントでは何も起きないがTabによる基本動作によって次のコンとロールにフォーカスが移動
マウスにて別のコントロールをクリック → クリックされたコントロールにフォーカスが移動

この3つの動作ではいずれも、フォーカス移動関係のイベントが発生します。
このフォーカス移動関係のイベントには
Validatingイベント(コントロール検証処理)
Leaveイベント(フォーカス喪失処理)
が含まれますので、適切な場所に適切な処理を配置するだけで問題は片付くと思います。

一度のイベントで全てを処理しようと考えてしまうから、行き止まりにハマってしまうのです。

処理を一箇所にまとめる努力も大切かもしれませんが、それ以上に適切な場所に適切な処理を配置すると言う事はそれ以上に大事です。

もし、適切な場所に配置する事によって同じ処理が複数箇所に分散するのであれば、関数を作成する事によって処理を集約すれば良い訳です
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2007-11-14 21:52
 だんじりさんのこれまでの投稿を見ていると、
* 使用している道具に対する理解不足
* 開発しようとしているアプリケーションの仕様に対する理解不足
を感じます。後者は、説明が下手というだけのことなのかもしれませんが。

 前にも勧めたと思いますが、まずはチームメイトに相談してみてはいかがでしょうか。
ここで相談するのは、必ずしも答えを得るためではありません。
問題を共有し、問題を整理することが目的です。

 また、やはり前にも勧めたと思いますが、インテリセンスに出てくる説明をアテにしたり、やってみて発生した現象をそのまま信じるのではなく、リファレンスをしっかり読んで、動作原理を理解して欲しいと思います。
原理がわかると、如何様にもアレンジできます。


引用:

だんじりさんの書き込み (2007-11-14 09:25) より:
【続き】Jittaさんに伺いたいのですがTab移動の設定はどのようにすればいいので しょうか。
TabIndex及びTabStopを設定してもtabが動作しません。
(関連質問と考え、同じスレッドでの質問で申し訳ありません)


 名指しでの質問には答えかねます。
その後、私が書かれている質問を見ると、確信がありますか?
私の都合を考えて下さっていますか?
「誰それさん、お願いします」と書くことで、他の人が回答しにくくなると思いませんか?

 また、「Enter キーでフォーカスを移動」という質問は、おおよそ半期ごとに1回はあります。右上の「検索」リンクより、「enter フォーカス 移動」で検索してみても、答えは見つかります。3ページ目くらいにありました。
 自分の質問だけを見るのではなく、他の人の質問にも目を通すことを勧めます。
* 他の人も、自分と同じような問題を持っている場合がある。
* 他の人が聞いたことと同じことで、自分が悩むことになる、場合がある。
* 他の人の書き方、それへの返答から、より回答を得やすい書き方を学習する。
こういった効果があります。
だんじり
大ベテラン
会議室デビュー日: 2007/08/10
投稿数: 155
お住まい・勤務地: 神奈川県
投稿日時: 2007-11-15 13:47
じゃんぬねっとさん、RUNさん、Jittaさん、ありがとうございます。
少し留守していましてお礼が遅くなりました。
じゃんぬねっとさんのサイト(C# と VB.NET のサンプル)拝見しましました。
私のスニペットに取込み、活用させていただきます。
皆様からも色々なご指導ありがとうございました。

Jittaさんも大阪での講師、がんばってください。

スキルアップ/キャリアアップ(JOB@IT)