投稿者 とくま  (社会人) 投稿日時 2025/5/22 14:35:17
>vb.net2019 FrameWorks3.5
2019でデフォルトの.NET Frameworkは4.8のはずなので、3.5までダウングレードしているということですよね。
.NET Framework3.5のリリースは2007年とかなので、大きな不具合はもう殆ど対応済みだと思います。

この手のバグで良くあるのは、インスタンスの管理ができていないPGを書いてしまっている場合ですが、
ShowDialogはDisposeを呼ばないとインスタンスが残るものの、Usingが呼び出すので問題なさそう。
この時点で1度目と2度目で動作が違うようなPGを組む方が困難になります。

となると座標の解釈を最初から間違って覚えてしまっているとか、自分でも覚えてない設定をデザイナで
やってしまってるとか。座標系は最大化とかしちゃうと正しく取れなくなったりはするので、初期表示の
WindowStateとか変えてると不具合を起こさせるのは可能かもしれない。

書いてない情報をエスパーするのは難しいので、新規プロジェクトで最小限の再現するコードを作るのが
早道かなぁ。あとは座標を画面やConsole.WriteLineで書き出して地道にデバッグしてみてください。
https://atmarkit.itmedia.co.jp/ait/articles/0511/18/news137.html

新規プロジェクトでフォームデザイナは全てデフォルト設定。以下のコードのみで動作確認してみてください。
こちらの環境では特に問題になりそうな動きはしませんでした。
'Form1 
Public Class Form1
    Private _ClickCount As Integer = 0
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        _ClickCount = _ClickCount + 1
        Using frm As New Form2
            frm.StartPosition = FormStartPosition.Manual
            frm.Top = 200 + 50 * _ClickCount
            frm.Left = 400 + 50 * _ClickCount
            frm.ShowDialog()
        End Using
    End Sub
End Class

'Form2 
Public Class Form2
    Private Sub Form2_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Class1.MouseCursorMoveToControl(Me.TextBox1)
    End Sub
End Class

'Class1 
Public Class Class1
    Public Shared Sub MouseCursorMoveToControl(ctrl As Control)
        Dim iWidth = ctrl.Width \ 2
        Dim iHeight = ctrl.Height \ 2
        Dim point = ctrl.PointToScreen(New Point(iWidth, iHeight))
        Cursor.Position = point
    End Sub
End Class