- PR -

TextBoxのEnterイベントが2回走る

1
投稿者投稿内容
さくら
常連さん
会議室デビュー日: 2005/09/12
投稿数: 31
投稿日時: 2007-07-30 16:42
VB.Net2003で開発を行っています。
あるTextBoxとComboBoxをマウスで触られたら別のTextBoxにフォーカスを移す、
という処理をしたくて、
コード:

Private Sub TextBox_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.Enter, TextBox1.Enter
TextBox2.Focus()
End Sub


というようにコードを書いているのですが、なぜかTextBox1をマウスでクリック
したときこのイベントに2回飛んできてしまい、困っています。
(実際にはこのSubの中で他の処理もしているので、処理が2回走るのは困るのです)
ステップ実行してみると、確かにTextBox2.FocusのところでMe.ActiveContorolが
TextBox2に変わるのですが、End Subで抜けた後またすぐにMe.ActiveControl=TextBox1
になってSubに入ってきてしまいます。
Sender=ComboBox1で入ってきたときには1回だけでフォーカスがTextBox2に移って
そのまま終わるのですが、何故なのでしょうか?
FormかTextBox1のプロパティの問題なのかと思って探してみたのですがそれらしい
ものも見つけられず、困っています。

何か見落としていることがあるのでしょうか?
ご存知の方、手がかりだけでも結構ですので、教えてください。

[ メッセージ編集済み 編集者: さくら 編集日時 2007-07-30 16:44 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-07-30 17:11
引用:

さくらさんの書き込み (2007-07-30 16:42) より:

あるTextBoxとComboBoxをマウスで触られたら別のTextBoxにフォーカスを移す、という処理をしたくて、
コード:

Private Sub TextBox_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.Enter, TextBox1.Enter
    TextBox2.Focus()
End Sub


というようにコードを書いているのですが、


まず目的とイベントが合致していないように思えます。 Mouse*** のイベントになるのではないでしょうか。 おそらく [Tab] キーによって遷移した場合は今のままで良いでしょうが、マウスとなると話が変わってきます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
さくら
常連さん
会議室デビュー日: 2005/09/12
投稿数: 31
投稿日時: 2007-07-31 10:21
引用:

じゃんぬねっとさんの書き込み (2007-07-30 17:11) より:
まず目的とイベントが合致していないように思えます。 Mouse*** のイベントになるのではないでしょうか。 おそらく [Tab] キーによって遷移した場合は今のままで良いでしょうが、マウスとなると話が変わってきます。



言われて気がつきました。確かにそうですね。
元のコードをMouseDownイベントに置き換えたところ、あっさり解決しました。
今回はTabでは飛ばないようにしているので、MouseDownで実装することにしました。
アドバイスありがとうございます。
(でも何故EnterイベントでTextBoxだと2回飛ぶのでしょう?Tabキーで遷移した
ときは1回しか飛ばないのに。。。)
1

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