取得したマウス座標がForm2に、反映されない への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 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
と、いうことですか?
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が複数作られたらアウトなので。
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
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
お騒がせしました