View Full Version : سوال: نحوه تعیین location در فرم
aftabeshargh
چهارشنبه 16 فروردین 1391, 12:16 عصر
سلام
اینکه بخوایم تو یه فرم در حالت ماکسیمایز یه کنترل رو در موقعیت دلخواه مکان بدیم به چه صورته ؟ یعنی مثلا اگه بخوایم به یه usercontrol آدرس بدیم که به زدن دکمه بره به سمت راست ترین نقته در فرم و یا در مرکز فرم و....
Hybrid
چهارشنبه 16 فروردین 1391, 12:43 عصر
سلام ، کد زیر گوشه ی بالا سمت چپ دکمه 1 رو به نقطه ی 20,20 میبره
Button1.Location = New Point(20, 20)
به دلخواه تغییر بدین.واسه اینکه به وسط فرم بره شما عرض فرم رو تقسیم بر 2 میکنین و به عنوان x نقطه قرار میدین واسه y هم همینطور.
aftabeshargh
چهارشنبه 16 فروردین 1391, 12:51 عصر
سلام
ممنون از راهنمایی تون " خب اون دستور رو میدونم اما منظورم یه چیز دیگست
مثلا برا یه usercontrol که یه دکمه روشه و این usercontrol رو روی یه فرم میزاریم " شما توی این دکمه کد بزارید که با کلیک روی دکمه این usercontrol به سمت راست ترین قسمت فرم به آهستگی حرکت کنه یعنی درقسمت dock=right فرم قرار بگیره و روی یه دکمه دیگه کدی بزارید که دوباره به مرکز فرم قرار بگیره.. وقتی فرم max هستش توی دکمه usercontrol چطور طول و عرض فرم رو بگیریم
aftabeshargh
چهارشنبه 16 فروردین 1391, 13:29 عصر
دوستان لطفشونو دریغ نکنن
tstsst
چهارشنبه 16 فروردین 1391, 14:07 عصر
سلام
پایین راست:
Button1.Location = New Point(Me.Width, Me.Height)
و با کم و زیاد کردن x,y می تونی نسبت به طول و عرض فرم جابجا کنید
برای مثال :
Button1.Location = New Point(Me.Width - 100, Me.Height - 100)
و برای حرکت از همان نقطه به نقطه مورد نظر :
For i = Button1.Location.X To Me.Width
Button1.Location = New Point(i, Me.Height / 2)
Next
یا :
For i = Button1.Location.X To Me.Width
For abc = Button1.Location.Y To Me.Height
Button1.Location = New Point(i, abc)
Next
Next
aftabeshargh
چهارشنبه 16 فروردین 1391, 15:10 عصر
سلام
یه برنامه خالی میزارم دوستان اگه کاملش کنن ممنون میشم :بامزه:
ممنون
xxnagin
چهارشنبه 16 فروردین 1391, 17:55 عصر
سلام
من طبق نمونه ای که گذاشتین اینو درست کردم که فکر کنم همین باشه
'در یوزر کنترل
Public panel1 As Panel
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Timer1.Enabled = True
Timer2.Enabled = True
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Me.Width -= 5
If Me.Width > -5 Then
panel1.Width += 5
panel1.Top -= 2
End If
If Me.Width = 0 Then
panel1.Top = Me.Top + 2
Timer1.Enabled = False
End If
Me.ParentForm.Text = panel1.Top
End Sub
Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
If Me.Top = 0 Then
Timer2.Enabled = False
End If
End Sub
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Me.ParentForm.Dock = DockStyle.Right
panel1 = New Panel
End Sub
'در فرم
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Timer1.Enabled = True
End Sub
Private Sub Location1_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Location1.SizeChanged
If Location1.Width > 350 Then
Location1.Width = 350
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Location1.Width += 5
Panel1.Top += 2
Panel1.Width -= 5
If Panel1.Top > 133 Then
Panel1.Top = 133
End If
Panel1.Width = Location1.Left - 10
If Location1.Width = 350 Then
Timer1.Enabled = False
End If
End Sub
Public Sub New()
InitializeComponent()
Location1.panel1 = Panel1
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Text = Panel1.Top
End Sub
tstsst
چهارشنبه 16 فروردین 1391, 19:19 عصر
سلام
85192
تایمر برای سرعتشه
xxnagin
چهارشنبه 16 فروردین 1391, 20:37 عصر
ولی فکر نمیکنی وقتی که دکمه نمایش را که میزنی یوزرکنترل یه بار به طرف چپ میره و تایمر غیر فعال بشه و اگر چند بار هم اگه بزنی دکمه نمایش دیگه کار نکنه
ولی اینجوری 5 بار که دکمه نمایش رو بزنی کلا یوزرکنترل محو میشه و دیگه بدرد نمیخوره ودوباره باید راه اندازی بشه و دکمه بستن دیگه وجود نداره که یوزر کنترل به سمت راست بیاد
aftabeshargh
چهارشنبه 16 فروردین 1391, 21:12 عصر
سلام
ولی اینجوری 5 بار که دکمه نمایش رو بزنی کلا یوزرکنترل محو میشهبرای این قسمت که شما میگید " درسته باید یه تغییر کوچیک تو دستورات دوستمون جناب tstsst (http://barnamenevis.org/member.php?161733-tstsst)
داد و یه شرط گذاشت که وقتی یه بار نمایش داده میشه تا وقتی دوباره محو نشده اجازه تکرار کد رو نداد .
با دستورات زیر برای یک usercontrol با داشتن عرض فرم اصلی عملیاتش انجام میشه :
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim i, t As Integer
If m = 1 Then
t = Location1.Width
Do While Not t = i
i += 1
Location1.Width = t - 1
Location1.Location = New Point(Location1.Location.X + 1, Location1.Location.Y)
Panel1.Width += 1
Loop
Else
t = 350
Do While Not t = i
i += 1
Location1.Width = i
Location1.Location = New Point(Location1.Location.X - 1, Location1.Location.Y)
Timer1.Stop()
Panel1.Width -= 1
Loop
End If
End Sub
:button1
m = 2
Timer1.Start()
:usercontrol location
Form1.m = 1
Form1.Timer1.Interval = 50
Form1.Timer1.Enabled = True
Form1.Timer1.Start()
یعنی با توجه به داشتن عرض فرم این دستور انجام میشه :
Else
t = 350
Do While Not t = i
i += 1
Location1.Width = i
Location1.Location = New Point(Location1.Location.X - 1, Location1.Location.Y)
Timer1.Stop()
Panel1.Width -= 1
Loop
سوال : حالا اگه بخوایم برای یک فرم تنها استفاده کنیم چطور میشه ؟ یعنی با کلیک روی یه فرم " فرم به سمت راست ، چپ ... مانیتور بره و محو بشه
Hybrid
چهارشنبه 16 فروردین 1391, 21:39 عصر
سوال : حالا اگه بخوایم برای یک فرم تنها استفاده کنیم چطور میشه ؟ یعنی با کلیک روی یه فرم " فرم به سمت راست ، چپ ... مانیتور بره و محو بشه
یک حالتش ( از چپ به راست) رو واست نوشتم ، بقیش به طریق مشابه انجام میشه و نکته ی خاصی نداره
aftabeshargh
چهارشنبه 16 فروردین 1391, 22:30 عصر
سلام
منظورم از محو شدن" استفاده از opacity نبود " منظورم این بود که وقتی فرم کاملا از سمت راست دسکتاپ گذشت بعدش بسته بشه " همین
شرط اینکه بفهمیم location فرم به انتهای سمت راست مانیتور - دسکتاپ رسیده چیه ؟ که بعدش فرم رو ببندیم ؟
Me.Left = Me.Left + 20
یعنی وقتی با دستور بالا فرم به انتهای دسکتاپ رسید با چه شرطی بگیم فرم بسته بشه ؟ لوکیشن سمت راست ترین نقطه مانیتور چنده ؟
xxnagin
چهارشنبه 16 فروردین 1391, 22:39 عصر
'چپ به راست
Me.Left += 10
If Me.Left = Screen.PrimaryScreen().Bounds.Width Then
Timer1.Enabled = False
End
End If
'راست به چپ
Me.Left -= 10
If Me.Right < Screen.PrimaryScreen().Bounds.X Then
Timer1.Enabled = False
End
End If
aftabeshargh
چهارشنبه 16 فروردین 1391, 22:45 عصر
سلام
End چرا انجام نمیشه ؟ یعنی شرط بررسی نمیشه ؟
xxnagin
چهارشنبه 16 فروردین 1391, 22:49 عصر
چرا من دارم میزنم میشه
aftabeshargh
چهارشنبه 16 فروردین 1391, 22:57 عصر
برا بخش "چپ به راست" شرط اجرا نمیشه
xxnagin
پنج شنبه 17 فروردین 1391, 00:11 صبح
ببخشید به جا ی Width راست یا (right) بذار
که این میشه
و به جای مساوی <
Screen.PrimaryScreen().Bounds.right
کل کد
If Me.Left > Screen.PrimaryScreen().Bounds.Right Then
Timer1.Enabled = False
End
End If
aftabeshargh
پنج شنبه 17 فروردین 1391, 00:16 صبح
فرقی نکرد دوست عزیز
xxnagin
پنج شنبه 17 فروردین 1391, 00:24 صبح
کل کد
به جای مساوی < را بذار
Me.Left += 10
If Me.Left > Screen.PrimaryScreen().Bounds.Right Then
Timer1.Enabled = False
End
End If
aftabeshargh
پنج شنبه 17 فروردین 1391, 00:33 صبح
حالا شد " ممنونم
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.