取得したマウス座標がForm2に、反映されない への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 取得したマウス座標がForm2に、反映されない  (学生) 投稿日時 2009/10/5 10:00:26
form2をfに変更したら、思った通りの動作になりました
お騒がせしました
投稿者 winvis  (学生) 投稿日時 2009/10/5 08:57:11
返答ありがとうございます
winvisです
>たとえば,Loadイベントで作るインスタンスはフィールドにし,
>それをTickイベントを使うようにしてみてはどうでしょう。
つまり、こういうことですか?
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim f As New Form2
        f.Owner = Me
        f.Show()
    Dim X As Integer
        Dim Y As Integer
        Dim Pos As Point = Me.PointToClient(Windows.Forms.Cursor.Position)
        X = Pos.X
        Y = Pos.Y
        Form2.PictureBox1.Location = New Point(X, Y)
        Me.Text = X & ", " & Y
    End Sub

と、いうことですか?
投稿者 YuO  (社会人) 投稿日時 2009/10/4 11:08:38
Form1_Loadで使っているのはそこで作成したForm2のインスタンスですが,
Timer1_Tickで使っているのはForm2の既定 (暗黙) のインスタンスになります。

たとえば,Loadイベントで作るインスタンスはフィールドにし,
それをTickイベントを使うようにしてみてはどうでしょう。
# 一応,既定インスタンスで全部回す事は出来る物の,Form1が複数作られたらアウトなので。
投稿者 winvis  (学生) 投稿日時 2009/10/4 10:19:49
まず、Form2に、PictureBoxが、あります
Form1に、100に、設定したTimerが、あります
VBサンプル集 - VB.netのマウスの位置を取得するでマウスの座標をフォーム座標で取得するを、使って
Form1上のマウス座標を、取得して、その座標にForm2のPicture Boxを、移動させると、言うソースをくんでいるのですが
どうにも、Form2のPicture Boxが、動きません
Me.textで、取得した座標をForm1で、表示させているので、座標の取得は、問題がないと思うのですが・・・
'以下がソースコードです
Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim f As New Form2
        f.Owner = Me
        f.Show()
        Timer1.Enabled = True
    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim X As Integer
        Dim Y As Integer
        Dim Pos As Point = Me.PointToClient(Windows.Forms.Cursor.Position)
        X = Pos.X
        Y = Pos.Y
        Form2.PictureBox1.Location = New Point(X, Y)
        Me.Text = X & ", " & Y
    End Sub
End Class