- - PR -
TextBoxにデータを入力後、発生するイベントは?
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-11-12 05:52
となりますと、既出のように KeyDown イベントあたりで良さそうですね。
_________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||||||
|
投稿日時: 2007-11-12 07:42
1.そうですか?2回というのが、変 2.leaveなので、フォーカスを失ったときに発生します 3.なぜ?1とあわせて、何か細工していませんか? 4.Textプロパティの内容が変わった時に発生するので、その挙動で正常です。
Enterはフォームにある規定のボタンに割り当てられています。なので、そのボタンのクリックイベントが発生するでしょう。 目的のものは、Validating イベントではないかとおもわれます | ||||||||||||
|
投稿日時: 2007-11-12 09:09
AcceptButtonプロパティが設定されていれば、ですよね。 もしかして別スレからの流れで周知の事実として書かれたのでしょうか。 いずれにしても、ちょっと混乱するなと思い書かせていただきました。 | ||||||||||||
|
投稿日時: 2007-11-12 09:23
誤って伝わったのであれば、お詫びよりもまず先に 正しく意図を伝えるべきだと思います。Enterキー押下により何をしたいのか? が伝わってきません。何をしたいかによって使うべきイベントもおそらく異なります。 Enterキーを押下することで付随して、フォーカスが移動する、 入力チェックが行われる、などの処理が行われるのではないでしょうか? Enterキーが押されたというタイミングを純粋に知りたいのであれば、 みなさんもおっしゃっているようにKeyDownイベントが該当するでしょう。 そうでなく、何度も出てきている「確定」という言葉どおりの意味合いがあるなら、 そこで何らかの入力チェックを行うためのイベントを探されているのではないでしょうか? この場合、KeyDownイベントでの対応は適切と言えず、 Jittaさんが指摘されているようにValidatingイベント(とその関連イベント)が 使えるだろうと思います。 #マウスでもフォーカスは移動できますので、 #KeyDownイベントで入力チェックをしたのでは対応に漏れがでますから。 | ||||||||||||
|
投稿日時: 2007-11-12 09:34
じゃんぬねっとさん、ありがとうございます。
すでに、まどかさんから指導いただいた「 KeyDown イベントあたりで良さそうでね。」 との事ですが、実験しますと1文字入力毎にイベントが発生し、なおかつ最後に「Enterキー」を押すとイベントが発生します。 このことは「イベント発生毎にTextBoxの入力文字を取得して、文字数が増えていたら イベントを無効にする」処理を追加する必要がありますね。 Jittaさん、ありがとうございました。 私のテスト結果にコメントをいただけ大変助かりました。再度新しいフォームを作成し テストしてみました。 1.そうですか?2回というのが、変 →フォーカス取得時に1回だけでした。 2.leaveなので、フォーカスを失ったときに発生します →TabIndex及びTabStopを 正常に設定しているのにタブが動作していなく見損じでした。 3.なぜ?1とあわせて、何か細工していませんか? →このTextBoxがleave_TextBoxの次に配置されていてEnabledChanged_TextBoxにフォーカスを移動させたときにleaveの フォーカス喪失時イベントを読み違えていました。イベントは発生しません。 ご指導いただきましたValidating イベントについてもテストしてみました 1.Validating(コントロールが検証しているとき・・)→フォーカス喪失後に1回 2.Validated(コントロールが検証されカ後・・)→フォーカス喪失後に1回発生 3.VisibleChanged(コントロールの表示状態が変わったとき・・)→入力時は発生 しませんが、テスト用フォームを開いたときに次の順で2回イベントが発生します。 VisibleChangedイベント→TextChangedイベント→VisibleChangedイベント ※VisibleChangedイベントは私が関連あると思い追加しました。 Tab移動を設定している場合は、まどかさんやじゃんぬねっとさんから指導いただいた 「 KeyDown イベント」よりも「Validating」や「Leave」イベントの方が使いやすそう ですが、もう少しテストしてみます。 ところで、Jittaさんに伺いたいのですがTab移動の設定はどのようにすればいいので しょうか。TabIndex及びTabStopを設定してもtabが動作しません。(関連質問と考え、同じスレッドでの質問で申し訳ありません) よろしくご指導下さい。 追加編集 その後、tab動作はEnterキーを押すことでは動作せず、Tabキーを押すことで動作する ことが分りました。EnterキーにもTabキー同様の動作をさせる設定が出来るのでしょうか。 [ メッセージ編集済み 編集者: だんじり 編集日時 2007-11-12 10:22 ] [ メッセージ編集済み 編集者: だんじり 編集日時 2007-11-12 10:37 ] | ||||||||||||
|
投稿日時: 2007-11-12 10:10
まどかさん、ご親切にありがとうございます。
私の力量ではなぜEnterイベントが2回発生しのか分らず、新しいフォームを作って 再テストしましたら1回の発生になりました。ありがとうございます。 よねKENさん、ありがとうございます。 私の質問は、下記の通りで
EnterキーはTextBoxに入力済みのデータを確定して入力手続きをするための働きと、 深く考慮することなく使っておりました。よねKENさんご指摘の通りマウスで フォーカスが移動しても(Enterキーを押さなくても)入力処理がなされる事を確認 しました。またEnterには検証という作業が伴っているようで、何を検証しているのか は、これから勉強します。 ありがとうございました。 | ||||||||||||
|
投稿日時: 2007-11-12 18:02
フォローありがとうございます。その通りです。 | ||||||||||||
|
投稿日時: 2007-11-12 19:54
これだけど、
をちゃんと見てないのかな? KeyDown イベントってのは、キーボードのいずれかのキーが押されたときに発生するイベントで、Enterキーが押された時に【のみ】発生するイベントでは【有りません】 MSDNはちゃんと読みましたか? 読んでいれば、KeyDown イベントの仕様がキーボードのいずれかのキーが押された時に発生する事がわかった筈です。 そして、まどかさんが 「Enterは単に改行という目に見えないコードを入力」と言っている事より、改行コードが入力された事を調べればよいと言う事もすぐに気が付く事ができると思います。 まずは、回答者が言われている事の意味をよく読んで理解されてはいかがでしょうか? 最後に、ここに書いた事は
のヒントにもなると思います |