PDA

View Full Version : گرفتن فوکوس برای کنترل های مثل lable و PictiureBox



rezaei manesh
چهارشنبه 02 اسفند 1385, 18:54 عصر
چکار کنم که کاربر بتونه فوکوس رو به کنترل هایی مثل Lable هم ببره و اونا رو حرکت بده و..

Alireza_Salehi
چهارشنبه 02 اسفند 1385, 19:38 عصر
با این کد میتونی هر کنترلی رو حرکت بدی !

Public Class Form1
Dim ControlMove As Boolean
Dim ControlLocation As Point
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
For Each C As Control In Me.Controls
AddHandler C.MouseDown, AddressOf Controls_MouseDown
AddHandler C.MouseMove, AddressOf Controls_MouseMove
AddHandler C.MouseUp, AddressOf Controls_MouseUp
Next
End Sub

Private Sub Controls_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
ControlLocation = e.Location
ControlMove = True
End If
End Sub

Private Sub Controls_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
If ControlMove And TypeOf sender Is Control Then
Dim cp As Point = Me.PointToClient(System.Windows.Forms.Cursor.Posit ion)
Dim C As Control = sender
C.Location = New Point(cp.X - ControlLocation.X, cp.Y - ControlLocation.Y)
End If
End Sub

Private Sub Controls_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
ControlMove = False
End Sub
End Class

VisualStudio
چهارشنبه 02 اسفند 1385, 20:21 عصر
چطوری کلا رو یک کنترل فوکوس قرار بدیم

rezaei manesh
پنج شنبه 03 اسفند 1385, 09:28 صبح
کد شما خیلی عالی بود من این کار انجام مب دادم اما کد خوب نبود
من می خوام با کی بور انجام بدم؟

PC2st
پنج شنبه 03 اسفند 1385, 10:18 صبح
برای بردن فوکوس روی یک کنترل ()controlName.Focus رو استفاده میکنیم. ولی تا اونجائی که میدونم، وقتی که فوکوس را روی یک label میبریم، خودش فوکوس نمیگیره و فوکوس رو به کنترل بعدی انتقال میده.

rezaei manesh
پنج شنبه 03 اسفند 1385, 10:24 صبح
این در حالت عادی هست
من می خوام کاربر وقتی رو یه لیبل کلیک کرد رنگش عوض بشه و اون لیبل در حالت انتخاب شده در بیاد و قتی دکمه های کی بورد رو می زنه من با کد کنترل کنم

oVERfLOW
پنج شنبه 03 اسفند 1385, 10:52 صبح
لیبل به صورت خودکار فوکوس رو منتقل می‌کنه
بنابراین شما نمی‌تونید از فوکوس عادی استفاده کنید

دو تا راه هست

یکی اینکه از SubClassing استفاده کنید و نذارید فوکوس رو منتقل کنه
و راه دوم هم اینه که یه فوکوس مجازی خودتون ایجاد کنید و یه متغیر سراسری داشته باشید که کنترلی رو که فعلا روش فوکوس هست رو ذخیره کنه و با فشرده شدن کلیدها تغییرات رو روی اون انجام بده.

rezaei manesh
پنج شنبه 03 اسفند 1385, 11:03 صبح
درباره SubClassing اگه می شه یکم بیشتر توضیح بدیند.
در مورد راه دومتون هم منظورتون رو درست نفهمیدم وقتی لیبل فوکوس نمی شه من چه طور روش تغییر بدم؟!
اگه منطورتون اینه که وقتی روی اون lableکلیک می کنه من اونو نگه دارم و.. که فکر کنم بشه یه کارایی کرد
اما خوب اگه قرار از ماوس استفاده کنه که با درگ کارش رو انجام می ده من می خوام بدون ماس همه عملیات صورت بگیره و هم با ماوس به صورت مستقل و یا تر کیبی

Alireza_Salehi
پنج شنبه 03 اسفند 1385, 11:26 صبح
فکر کنم اگر محیطی مثل حالت Design در VisualStudio برای این کار (حرکت دادن کنترل و دادن فوکوس- شبیه حالت Design) استفاده کنی بهترین راهه
هم جذاب تره هم تخصصی تر!
برای این کار لینک زیر رو ببین:
http://www.barnamenevis.org/forum/showthread.php?t=60621 (http://www.barnamenevis.org/forum/showthread.php?t=60621)(پست شماره 3 اولین لینک)

Mbt925
پنج شنبه 03 اسفند 1385, 11:29 صبح
اگه لازم دارید میتونم براتون یه Label بسازم که فوکوس بگیره