سلام دوستان چه طوری میشه وقتی با Web Browser یه صفحه ای رو باز می کنی یکPROGRESS بزاری تا صفحه باز بشه .
سلام دوستان چه طوری میشه وقتی با Web Browser یه صفحه ای رو باز می کنی یکPROGRESS بزاری تا صفحه باز بشه .
كنترل web browser يك متد داره به نام ReadyState. اگر برابر بود با READYSTATE_COMPLETE يعني صفحه كامل لود شده. پس اگر برابر نبود يعني داره لود ميشه و ميتونيم اينجا Progress bar رو فعال كنيم.
به اين صورت:
WebBrowser1.Navigate "http://www.BarnameNevis.org"
Do Until WebBrowser1.ReadyState = READYSTATE_COMPLETE
'...
'...
'...
DoEvents
Loop
ولي يك اما و اگر داره ...!
موفق باشيد/
الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.
دوخط کد که دیگه پروژه نمی خواد. تو همون کد بالا قبل یا بعد از DoEvent باید Value پروگرس بار رو افزایش بدید.
اون اما و اگری که گفتم داره این هست که شما نمی تونید حدس بزنید که کی قرار هست صفحه کامل لود بشه پس نمی تونید جریان پروگرس بار رو دقیق کنید.
یک راه دیگه هم وجود داره که خود IE از همین استفاده می کنه. و اون هم این که از رویداد ProgressChange در WebBrowser استفاده کنید. این رویداد دو پارامتر داره که اولی Progress هست و دومی ProgressMax. از اسمشون مشخص هست که چی هستند. پس شما یک ProgressBar بزارید رو فرم و این کد رو بنویسید:
این دقیقاً همانند پروگرس بار خود IE عمل می کنه. On error در کد بالا به این خاطر هست که در انتها زمانی که فرم به طور کامل لود شد پارامتر Progress مقدار -1 میگیره درحالیکه Value پروگرس بار نمی تونه مقدار منفی داشته به همین خاطر on error گذاشتم.
Private Sub WebBrowser1_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)
On Error Resume Next
ProgressBar1.Max = ProgressMax
ProgressBar1.Value = Progress
End Sub
موفق باشید/
پ.ن: عنوان تاپیک اصلاح شد. عنوان پیشین: کار با Web Browser
آخرین ویرایش به وسیله xxxxx_xxxxx : چهارشنبه 06 آبان 1388 در 09:57 صبح
الگوریتم هایی که تاریخچه خود را فراموش می کنند، محکوم به تکرار آن هستند.
اینهم میشه
Private Sub WebBrowser1_ProgressChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserProgressChangedEven tArgs) Handles WebBrowser1.ProgressChanged
Dim d, t As Integer
ProgressBar1.Visible = True
d = e.CurrentProgress
t = e.MaximumProgress
If d <= 0 Then
ProgressBar1.Value = 0
ProgressBar1.Visible = False
Else
ProgressBar1.Value = Math.Min(ProgressBar1.Maximum, Convert.ToInt32(Math.Floor(ProgressBar1.Maximum * (d / t))))
End If
End Sub