Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
Leave イベントの発生原因は取得可能でしょうか?
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30664#CommentId84799
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
hori
 (社会人)
投稿日時
2021/11/1 17:40:26
Form に TextBox 2つと Button を1つ配置して付きのようなコードを書きました。
=================================================================
Public Class Form1
Dim flg As Integer = 0
Private Sub TextBox1_Enter(sender As Object, e As EventArgs) Handles TextBox1.Enter
flg = 1
TextBox1.Text = "3"
End Sub
Private Sub TextBox1_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox1.KeyDown
If e.KeyData = Keys.Enter Then
TextBox2.Text = "4"
TextBox2.Select()
End If
End Sub
Private Sub TextBox1_Leave(sender As Object, e As EventArgs) Handles TextBox1.Leave
If flg = 1 Then
MsgBox("tbx")
flg = 2
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
flg = 5
MsgBox("btn")
End Sub
Private Sub TextBox2_Enter(sender As Object, e As EventArgs) Handles TextBox2.Enter
TextBox2.Text = CStr(flg)
End Sub
Private Sub TextBox2_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBox2.KeyDown
If e.KeyData = Keys.Enter Then
flg = Val(TextBox2.Text)
End If
End Sub
End Class
===================================================================
いろいろやってみて判ったことは、
①TextBox1 にフォーカスがある時、Button1 をクリックしたら TextBox1.Leave が発生し、Button1.Click は無視される。(MsgBox("btn") が表示されない。)
②TextBox1 にフォーカスがある時、TextBox2 をクリックしたら TextBox1.Leave が発生し、その後、TextBox2.Enter が発生する。("tbx" が表示され、flg = 2 になる)
と云う事です。①の場合、僕の感覚ではボタンをクリックしたから Leave が発生するのだから、ボタン・クリックが先でテキスト1・リープが後であるべきだと思うのですが・・・・
ともかく、①の状況でボタン・クリックをしたとき、"tbx" を表示させずに、"btn" を表示させる。けれど、②の状況では現状維持と云う方法はありますか?。
そのためには、Leave の発生原因を取得できれば一番いいのですが、僕の調べた限り無いようなのです。が、本当はあるんじゃないかと思って質問しました。
次善策としては、上記の例なら、TextBox2.Enter 内に、MsgBox("tbx") を移動させて、TextBox1.Leave を削除する事かなと思うのですが、これを実行する前に本当に無いのかどうか確かめたいのです。
ご存知の方、居られましたらよろしくご教示ください。