PDA

View Full Version : آموزش: جابجايي و حركت دادن فرمي كه TitleBar ندارد



ROSTAM2
شنبه 17 تیر 1391, 11:08 صبح
سلام

اين دفعه نوع تاپيك و گذاشتم آموزشي!! ! ! :لبخند:
براي حركت دادن يك فرم كه نوار عنوان ندارد از اين روش مي تونيد استفاده كنيد:

در قسمت Declaration:


Dim X, Y As Integer


در Evant --> MouseDown از شيئي كه قرار است جايگزين Titlebar باشد يا خود فرم


Private Sub Bar3_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Bar3.MouseDown
X = e.X
Y = e.Y
End Sub


و در انتها دستوري كه بايد در Event --> MouseMove از شئ نوشته شود


Private Sub Bar3_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Bar3.MouseMove
If (e.Button) Then
Me.Location = New Point(MousePosition.X - X, MousePosition.Y - Y)
End If
End Sub

Nobody_Everybody
شنبه 17 تیر 1391, 13:10 عصر
سلام

اينم شد آموزش ؟؟ :گیج:
لطفا يه كم آموزش حرفه اي كه توي سايت گذاشته ببينيد بعد به اين دستورات ساده و كم ارزش بگيد آموزش؟؟ :قهقهه:


براي حركت دادن يك فرم كه نوار عنوان ندارد از اين روش مي تونيد استفاده كنيد:

خوب چرا نبايد نوار عنوان داشته باشه يا بخوايم حذفش كنيم كه بخوايم دردسر به خودمون بديم ( بقول معرف سري كه درد نمي كنه كه دستمال نمي بندن)


اين دفعه نوع تاپيك و گذاشتم آموزشي!! ! !

خرگوش كشتي ! :قهقهه:

ROSTAM2
شنبه 17 تیر 1391, 14:15 عصر
خوب چرا نبايد نوار عنوان داشته باشه يا بخوايم حذفش كنيم كه بخوايم دردسر به خودمون بديم ( بقول معرف سري كه درد نمي كنه كه دستمال نمي بندن)


بعضي مواقع لازمه كه فرم رو بنا به سليقه خودمون و به صورت سفارشي بسازيم براي اين كه همه پنجره با هم ست باشه اگه نوار عنوان سفارشي بشه برنامه قشنگ تر از آب در مي ياد نخ سوزن در مواردي كه از dev component استفاده مي شه ...

مثل اين تصوير كه مي بينيد دقيقا شبيه اصل هستش و تنها فرقي كه مي كنه Border از فرم حذف شده كه برا اينكه با همه طرح ست هستش اون عيبش زياد مهم نيست (من)

http://axgig.com/images/41653648294480013166.jpg


خرگوش كشتي !

شكار خرگوش همچين آسونم نيست! :بامزه:

Hossein Bazyan
شنبه 17 تیر 1391, 14:55 عصر
سلام

اينم شد آموزش ؟؟ :گیج:
لطفا يه كم آموزش حرفه اي كه توي سايت گذاشته ببينيد بعد به اين دستورات ساده و كم ارزش بگيد آموزش؟؟ :قهقهه:



خوب چرا نبايد نوار عنوان داشته باشه يا بخوايم حذفش كنيم كه بخوايم دردسر به خودمون بديم ( بقول معرف سري كه درد نمي كنه كه دستمال نمي بندن)



خرگوش كشتي ! :قهقهه:

سلام
برنامه نویسی یه بخشش کد نویسی و بیشترش خلاقیت .
یکی دیگر از موارد استفاده از این کدها برای پنلها یا گروه هاست مثلا با عمل خاصی ( مثلا " چاپ ) یه پنل رو نمایش میدی که کاربر میتونه تنظیمات پرینت یا خروجی پرینت رو انتخاب کنه ) حال این رو در پنل قرار میدی . اگر بتونی پنل رو با ماوس جابجا کنی که برنامه حرفه ای تر خواهد شد.

shahryari
یک شنبه 18 تیر 1391, 17:45 عصر
با سلام

اينم شد آموزش ؟؟ :گیج:
لطفا يه كم آموزش حرفه اي كه توي سايت گذاشته ببينيد بعد به اين دستورات ساده و كم ارزش بگيد آموزش؟؟ :قهقهه:



قانون شماره 15
لطفاً در هنگام جواب دادن به سوالات، از به کار بردن الفاظ و عباراتی که باعث دلسردی کاربر می گردد خودداری نمایید. به خاطر داشته باشید که این سایت محل یادگیری است.
قوانین کلی سایت (http://barnamenevis.org/showthread.php?51814-قوانین-کلی-سایت)
--------------------------------------------------------------------------
با این روش هم میتونید فرمی که BorderStyle برابر None هست رو جابجا کنید:
اول تابع زیر را تعریف کنید:


Public Sub MouseDragging(ByVal e As MouseEventArgs, ByVal Control As Control)
Static OldPosition As New Point(-1, -1)
If Not (e.Button = Nothing) Then
If e.Button = Windows.Forms.MouseButtons.Left Then
If (OldPosition.X = -1) And (OldPosition.Y = -1) Then OldPosition = New Point(e.X, e.Y)
If e.Y <> OldPosition.Y Then
Control.Top += e.Y - OldPosition.Y 'move Up/Down
End If
If e.X <> OldPosition.X Then
Control.Left += e.X - OldPosition.X 'move Left/Right
End If
End If
Else
'button is nothing, maybe it was lifted.
OldPosition = New Point(-1, -1)
End If
End Sub

بعد در ایونت Form1_MouseMove کد زیر را بنویسید


Private Sub Form1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
MouseDragging(e, Me)
End Sub

با این روش میتونید نه تنها فرم بلکه هر کنترلی رو جابجا کنید کافی در پارامتر دوم بجای me نام کنترل مربوط را بنویسید البته در ایونت MouseMove همون کنترل
---------------------------------------------
موفق باشید