- PR -

VB.NET-MessageBoxから戻ったときのフォーカス

1
投稿者投稿内容
sonzai
会議室デビュー日: 2005/07/20
投稿数: 1
投稿日時: 2005-07-20 14:13
sonzaiと申します。
いつも当会議室で、有益な情報を閲覧させて頂いています。
ありがとうございます。

社内のプロジェクトで、初めて VB.NET を使用して、
システムを開発しようとしているのですが、
以下の現象が解決できずにいます。
ぜひお力添えを頂きたいとお思い、投稿しました。

環境
Windows2000 sp4
Microsoft Visual Basic .NET 2003
Microsoft .NET Framework 1.1 sp1

メインのフォームAから .Show() で、別のフォームBを表示します。
フォームA,Bには、テキストボックスがあります。
フォームBのテキストボックスから、MessageBoxを表示し、
MessageBoxからフォームBにフォーカスが戻ってきたときに、
フォームBのテキストボックスにカーソルが当たらないのです。
フォームB自体には、フォーカスが当たっています。

一方、フォームBを .Show() していない段階で、
フォームAのテキストボックスから、MessageBoxを表示し、
MessageBoxからフォームAにフォーカスが戻ってきたときは、
フォームAのテキストボックスにカーソルが当たります。

フォームB.Owner = フォームA や、
フォームA.AddOwnedForm (フォームB)を
やってみたのですが、解決に至りませんでした。

解決方法はないのでしょうか?
よろしくお願いします。

以下は、以上の現象を再現するサンプルプログラムです。
< フォームA >
Public Class Form1
Inherits System.Windows.Forms.Form
Private Sub TextBox1_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles TextBox1.KeyDown

MessageBox.Show(Me, "test1")

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim form2 As Form

form2 = New Form2
form2.Show()

End Sub

Private Sub Form1_Activated(ByVal sender As Object, _
ByVal e As System.EventArgs) _
Handles MyBase.Activated

Me.TextBox1.Focus()

End Sub

End Class

< フォームB >
Public Class Form2
Inherits System.Windows.Forms.Form

Private Sub TextBox1_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles TextBox1.KeyDown

MessageBox.Show("test2")

End Sub

End Class
1

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