PDA

View Full Version : گفتگو: مشکل در کار با ولیو کنترل progressbar



rezapassword
دوشنبه 01 مهر 1387, 09:51 صبح
سلام دوستان
من یه تایمر دارم با اینتروال 1 وعد در داخل اون این دستورات نوشته شده !: ( کد های زیر مثال هستند )

if label1.enabled=true then
progressbar1.value=progressbar1.value+10
Else
progressbar1.value=progressbar1.value-10
end if
if label2.enabled=true then
progressbar1.value=progressbar1.value+20
Else
progressbar1.value=progressbar1.value-20
end if



حالا وقتی شرط اجرا میشه به جای اینکه یک بار اجرا بشه هی پشت سر هم اجرا میشه و ولیو رو به 100 میرسونه
چه کار کنم که یک بار اجرا بشه
اگر تایمر رو فالس کنم دیگه شرط دو اجرا نمیشه
در صورت که برنامه مدام باید این شرط ها رو چک کنه !

amirsajjadi
دوشنبه 01 مهر 1387, 10:12 صبح
یک شرط دیگه بزار که اگه Progressbar1 صد یا صفر شد تایمر فالس بشه

rezapassword
دوشنبه 01 مهر 1387, 10:35 صبح
خب اگه تایمر فالس بشه دیگه اون شرط دوم اجرا نمیشه
نه این شدنی نیست

amirsajjadi
دوشنبه 01 مهر 1387, 13:28 عصر
خوب به جای اینکه تایمر رو فالس کنی یک متغیر بولین بزار و مقدار اون رو فالس کن بعد توی شروط ، مقدار این متغیر رو هم چک کن

rezapassword
دوشنبه 01 مهر 1387, 13:30 عصر
لطفا توضیح بیشتر !
ممنون

amirsajjadi
دوشنبه 01 مهر 1387, 13:45 عصر
Public Class Form1
Dim bool As Boolean = True
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Static i As Integer = 0
If Label1.Enabled = True And bool = True Then
i += 10
ElseIf Label1.Enabled = False And bool = True Then
i -= 10
End If
If Label2.Enabled = True And bool = True Then
i += 20
ElseIf Label2.Enabled = False And bool = True Then
i -= 20
End If
If i > 100 Then
i = 100
ElseIf i < 0 Then
i = 0
End If
ProgressBar1.Value = i
If ProgressBar1.Value = 0 Or ProgressBar1.Value = 100 Then
bool = False
End If
End Sub
Private Sub Label1_EnabledChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Label1.EnabledChanged, Label2.EnabledChanged
bool = True
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label1.Enabled = False
End Sub
Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
Label2.Enabled = False
End Sub
End Class

rezapassword
دوشنبه 01 مهر 1387, 17:01 عصر
سلام
نه دوست من
منظورم این نیست
ببینید مگه 2 تا لیبل نداریم
خوب حالا یک پروگرس بار هم دارین درسته
وقتی که لیبل یک فعال شد ( انیبل ) مقدار ولیو پروگرس بار هرچی که هست 10 تا بهش اضافه بشه
وقتی هم که لیبل یک غیر فعال شد مقدار ولیو پروگرس بار هرچ یکه هست 10 تا ازش کم بشه
برای لیبل 2 هم همین طریق
کد شما هم مثل مال خودم عمل کرد !
ممنون بابت زحمت
راستی یه پروژه رو اپلود کردم که شاید ایده رو توی ذهنتون فعال کنه ( با کدهای خودتون به صورت صحیح توش )
ممنون
http://rapidshare.com/files/147421730/WindowsApplication3.rar.html

mostafaaa
دوشنبه 01 مهر 1387, 18:48 عصر
وقتی که لیبل یک فعال شد ( انیبل ) مقدار ولیو پروگرس بار هرچی که هست 10 تا بهش اضافه بشه
وقتی هم که لیبل یک غیر فعال شد مقدار ولیو پروگرس بار هرچ یکه هست 10 تا ازش کم بشه
خوب دوست من دیگه چرا از Timer استفاده میکنی. خود لیبل یه Event به نام EnabledChanged داره ، به مثال توجه کن.

Private Sub Label1_EnabledChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Label1.EnabledChanged
If Me.Label1.Enabled Then
ProgressBar1.Value += 10
Else
ProgressBar1.Value -= 10
End If
End Sub
Private Sub Label2_EnabledChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Label2.EnabledChanged
If Me.Label2.Enabled Then
ProgressBar1.Value += 20
Else
ProgressBar1.Value -= 20
End If
End Sub

rezapassword
سه شنبه 02 مهر 1387, 07:36 صبح
mostafa جان
این فقط یه مثال و این روال باید با دستور ایف باشه

کم حوصله
سه شنبه 02 مهر 1387, 13:43 عصر
سلام
دوست عزیز شاید اگر مشکل خودتو به صورت واقعی مثال بزنی با تکه پروژه ات را اینجا بگذاری دوستان بهتر بتونند شما را راهنمایی کنند چون سئوال شما یکم گنگ است

rezapassword
سه شنبه 02 مهر 1387, 16:49 عصر
بفرما این مال اون پروژه نیست اما شبیحه

If Process.GetProcessesByName("babilon").Length > 0 Then
progressbar1.Value = AquaGauge1.Value + 5

Else
progressbar1.Value = AquaGauge1.Value - 5

End If
If Process.GetProcessesByName("egui").Length > 0 Then
progressbar1.Value = AquaGauge1.Value + 10

Else
progressbar1.Value = AquaGauge1.Value -10

End If

rezapassword
چهارشنبه 03 مهر 1387, 08:24 صبح
چی شد پس دوستان ؟

rezapassword
پنج شنبه 04 مهر 1387, 08:46 صبح
ممنون یه جوری خودم حلش کردم

domidimod
پنج شنبه 04 مهر 1387, 23:04 عصر
سلام
AquaGauge1 چیه؟!
من قطعه برنامه شما رو کپی کردم اما با این کلمه مشکل داشتم هم خودم هم VB.Net
لطفا در این مورد کمی توضیح دهید
مرسی

rezapassword
جمعه 05 مهر 1387, 09:35 صبح
AquaGauge یک کامپوننت اضافی هست که بر روی وی بی اینپرت میشه
برای کارهای ساده به درد نمیخوره
یه چیزی مثل کیلومتر شمار ماشینه