PDA

View Full Version : انتخاب یک محدوده روی فرم با موس



naseria2
دوشنبه 04 تیر 1386, 13:04 عصر
من می خواهم مانند ویندوز که در آن می توان با موس یک محدوده را انتخاب کرد ،در روی فرم هم بتوانم با استفاده از موس یک محدوده از فرم را انتخاب کنم.

متشکر از کمک شما

saeed_rezaei
دوشنبه 04 تیر 1386, 23:26 عصر
سلام دوست من
توی ویندوز هنگامی که یه محدوده رو انتخاب می کنیم آیکنهای داخل اون محدوده انتخاب می شن. شما می خواید با انتخاب محدوده بر روی فرم چه چیزهایی انتخاب بشن؟ آیا می خواید خود محدوده رو به دست بیارید یا مثلا کنترلهایی که دراون محدوده قرار گرفتن و یا... ؟

reza.palang
دوشنبه 04 تیر 1386, 23:51 عصر
شما باید مختصات نقطه ای که موس پایین میره رو بگیری. مختصات محلی که موس ول میشه رو هم بگیری. با داشتن این دو نقطه یه مستطیل رو میتونی فرض کنی که محدوده مورد نظر هست و آبجکت های مورد نظر رو که داخل این منطقه هست رو Select کنی

naseria2
سه شنبه 05 تیر 1386, 15:58 عصر
مشکل من پیدا کردن محدوده نبود بلکه میخواهم با کشیدن موس یک محدوده به صورت خط چین انتخاب شود. مانند انتخابی که با موس در ویندوز انجام میدهیم. حالا به هر صورتی مثلابه جای خط چین یک لیبل در زمان move بتوانم ایجاد کنم و اندازه انرا تغییر دهم که ایجاد نهایی لیبل پس از رها شدن موس اتفاق می افتد. پیشنهاد؟؟

saeed_rezaei
سه شنبه 05 تیر 1386, 21:52 عصر
کدش این میشه:


PublicClass Form1
Dim bol_ismousedown AsBoolean = False
Dim x, y, w, h AsInteger

PrivateSub Form1_MouseDown(ByVal sender AsObject, ByVal e As System.Windows.Forms.MouseEventArgs) HandlesMe.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
x = e.X
y = e.Y
bol_ismousedown = True
EndIf
EndSub

PrivateSub Form1_MouseMove(ByVal sender AsObject, ByVal e As System.Windows.Forms.MouseEventArgs) HandlesMe.MouseMove
If bol_ismousedown = TrueThen
Me.CreateGraphics.Clear(Me.BackColor)
Dim p AsNew Pen(Color.Black)
Me.CreateGraphics.DrawRectangle(p, x, y, e.X - x, e.Y - y)
EndIf
EndSub


PrivateSub Form1_MouseUp(ByVal sender AsObject, ByVal e As System.Windows.Forms.MouseEventArgs) HandlesMe.MouseUp
If e.Button = Windows.Forms.MouseButtons.Left And bol_ismousedown = TrueThen
w = e.X - x
h = e.Y - y
bol_ismousedown = False
Me.CreateGraphics.Clear(Me.BackColor)

Dim m AsNew Label
m.Text = "test label"
m.AutoSize = False
m.TextAlign = ContentAlignment.MiddleCenter
m.BorderStyle = BorderStyle.Fixed3D
m.Left = x
m.Top = y
m.Width = w
m.Height = h
Me.Controls.Add(m)
m.BringToFront()

EndIf
EndSub
EndClass


و این هم سورسش

توصیه: اگه می خوای برنامه نویسی بشی هیچ وقت کل کاری رو که می خوای انجام بدی رو از رو دست دیگران ننویس.