ورود

View Full Version : حرفه ای: بدست آوردن position سلولي كه ماوس بر روي اون هست. در TableLayoutPanel1



milad.biroonvand
پنج شنبه 06 اسفند 1388, 08:13 صبح
سلام دوستان من مي خوام وقتي كه بر روي يك سلول در يك TableLayoutPanel1 ميرم ، position اون منطقه رو برام بدست بياره . چطور ميتونم اينكار رو انجام بدم ؟

kebriya
پنج شنبه 06 اسفند 1388, 08:52 صبح
اگه منظورتو درست گرفته باشم جوابت کد زیره:


Private Sub TableLayoutPanel1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TableLayoutPanel1.MouseMove
Dim pt As Point = TableLayoutPanel1.PointToClient(Control.MousePosit ion)
MessageBox.Show(pt.ToString)
End Sub

milad.biroonvand
شنبه 08 اسفند 1388, 12:54 عصر
اگه منظورتو درست گرفته باشم جوابت کد زیره:


Private Sub TableLayoutPanel1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TableLayoutPanel1.MouseMove
Dim pt As Point = TableLayoutPanel1.PointToClient(Control.MousePosit ion)
MessageBox.Show(pt.ToString)
End Sub


عالیه بود

حالا میخوام بفهمم که در موقعیتی که هستم چه کنترلی در اون منطقه هست ، مثلا یک دکمه هست یا textbox .

Hossis
شنبه 08 اسفند 1388, 14:23 عصر
کنترل را با توجه به موقعيت ماوس، با تابع GetChildAtPoint مي توان به دست آورد که اين تابع در اکثر کنترلهاي ظرفيتي وجود دارد
مثال


Private Sub TableLayoutPanel1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TableLayoutPanel1.MouseMove, Me.MouseMove
Dim ctl As Control = Me.GetChildAtPoint(e.Location)
If ctl Is Nothing Then ctl = TableLayoutPanel1.GetChildAtPoint(e.Location)
If Not ctl Is Nothing Then
Me.Text = ctl.Name
End If
End Sub

milad.biroonvand
دوشنبه 10 اسفند 1388, 09:10 صبح
کنترل را با توجه به موقعيت ماوس، با تابع GetChildAtPoint مي توان به دست آورد که اين تابع در اکثر کنترلهاي ظرفيتي وجود دارد
مثال


PrivateSub TableLayoutPanel1_MouseMove(ByVal sender AsObject, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TableLayoutPanel1.MouseMove, Me.MouseMove
Dim ctl As Control = Me.GetChildAtPoint(e.Location)
If ctl IsNothingThen ctl = TableLayoutPanel1.GetChildAtPoint(e.Location)
IfNot ctl IsNothingThen
Me.Text = ctl.Name
EndIf
EndSub



می توانیم بر روی دکمه ای که می خواهیم بر روی آن درگ انجام بدیم ، کد زیر رو بنویسیم .

مثلا دکمه من button8 هست.



Private Sub Button8_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Button8.MouseMove
On Error Resume Next
Dim ctr As New Control
ctr = Me.GetChildAtPoint(PointToClient(MousePosition))
If Not ctr Is Nothing Then
If ctr.Name <> "Button8" Then
Label1.Text = ctr.Name
End If
End If
End Sub