PDA

View Full Version : قرار دادن تاخیر تا لود شدن کامل آدرس



newsinanas
یک شنبه 10 آذر 1392, 20:19 عصر
با سلام

در حال نوشتن برنامه هستم که با کلیک بر روی یک دکمه وارد آدرس خاصی در WebBrowser بشه و فیلد خاصی رو پر کنه.

اما قبل از این که لود کامل آدرس انجام بشه برنامه دستورات بعدی رو انجام میده و چون آدرس ، کامل لود نشده ، ارور میده که فیلد وجود نداره!!

از چه دستوری استفاده کنم که تا زمانی که آدرس لود نشده سراغ دستور بعدی نره ؟ یا حداقل یک تاخیر زمانی ایجاد کنه؟

با تشکر

sagggad
یک شنبه 10 آذر 1392, 20:23 عصر
با سلام

در حال نوشتن برنامه هستم که با کلیک بر روی یک دکمه وارد آدرس خاصی در WebBrowser بشه و فیلد خاصی رو پر کنه.

اما قبل از این که لود کامل آدرس انجام بشه برنامه دستورات بعدی رو انجام میده و چون آدرس ، کامل لود نشده ، ارور میده که فیلد وجود نداره!!

از چه دستوری استفاده کنم که تا زمانی که آدرس لود نشده سراغ دستور بعدی نره ؟ یا حداقل یک تاخیر زمانی ایجاد کنه؟

با تشکر

دوست عزیز اگه حدودی میدونی چند ثانیه طول میکشه یه تایمر ایجاد کن و Interval اون رو بر مبنای اون مقدار حدودی تنظیم کن.کدهات رو بریز تو اون!!:چشمک:

sagggad
یک شنبه 10 آذر 1392, 20:27 عصر
دوست عزیز اگه حدودی میدونی چند ثانیه طول میکشه یه تایمر ایجاد کن و Interval اون رو بر مبنای اون مقدار حدودی تنظیم کن.کدهات رو بریز تو اون!!:چشمک:

یه راه دیگه هم هست کدت رو دررویدادDocumentCompleted وب بروسر بنویس

sagggad
یک شنبه 10 آذر 1392, 20:38 عصر
درست شد؟؟؟

aliagamon
یک شنبه 10 آذر 1392, 20:44 عصر
درصورتی که بیش از یک فرایند باید در DocumentCompleted انجام بشه پیشنهاد میکنم از کد زیر استفاده کنید :

While webBrowser1.ReadyState <> WebBrowserReadyState.Complete
Application.DoEvents()
End While

با استفاده از این کد دیگه نیازی به رویداد document completed نیست و میتونید پس از بازکردن سایت در مرورگر بزارین درواقع کد بالا تا هنگامی که صفحه لود بشه دستورات بعدی رو متوقف میکنه و پس از بارگذاریی کامل دستورات بعدی اجرا میشه ... :چشمک:

sagggad
یک شنبه 10 آذر 1392, 20:51 عصر
درصورتی که بیش از یک فرایند باید در DocumentCompleted انجام بشه پیشنهاد میکنم از کد زیر استفاده کنید :

While webBrowser1.ReadyState <> WebBrowserReadyState.Complete
Application.DoEvents()
End While

با استفاده از این کد دیگه نیازی به رویداد document completed نیست و میتونید پس از بازکردن سایت در مرورگر بزارین درواقع کد بالا تا هنگامی که صفحه لود بشه دستورات بعدی رو متوقف میکنه و پس از بارگذاریی کامل دستورات بعدی اجرا میشه ... :چشمک:
ددوست من میشه بگین براچی بهتره از این کد استفاده کرد؟؟ اینجوری لقمه رو دور دهن چرخوندن نیست؟؟البته قصد ندارم بگم شما کدت مشکل داره ها این فقط یه سواله!

newsinanas
یک شنبه 10 آذر 1392, 21:11 عصر
درست شد؟؟؟

آره تغریبا حل شد ممنون.

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

دوستان اگه را حل دیگه ای هم هست ممنون میشم که بگین.

با تشکر فراوان

sagggad
یک شنبه 10 آذر 1392, 21:19 عصر
دوست عزیز اگه میشه یه ذره بیشتر راجع به نرم افزارت توضیح بده.در ضمن شما میتونی درهر فرمت از یه بروزر دیگه استفاده کنی!!

aliagamon
یک شنبه 10 آذر 1392, 21:21 عصر
ددوست من میشه بگین براچی بهتره از این کد استفاده کرد؟؟ اینجوری لقمه رو دور دهن چرخوندن نیست؟؟البته قصد ندارم بگم شما کدت مشکل داره ها این فقط یه سواله!
این جواب newsinanas (http://barnamenevis.org/member.php?314520-newsinanas) هم هست ...
درصورتی که شما بخواین کار بزرگ تر از چند چیز عادی انجام بدین (برای مثال چندین صفحه متفاوت که هیچ ربطی به هم ندارن ) رو باز کنید تو یه وب برازر و برای هرکدوم کار بخصوصی انجام بدین تو رویداد document completed باید چنتا شرط بزارین که تو خیلی از موارد خسته کننده و سردرگم کننده میشه ... (این ساده ترین حالت نیازه) خیلی از موارد هست که در حال انجام کار بهش بر میخورین و میفهمید این کد بیشتر به دردتون میخوره ...
همچنین میشه از اوش شرط(بدونه حلقه) استفاده کنید و بفهمید صفحه کامل باز شده یا نه ... و خیلی موارد دیگه که اون کد بدرد بخورتره ...
البته تو وحله اول رویداد خوبه اما برخی از موارد برای کمتر شدن در و سر بهتره از این روش استفاده شه ..

sagggad
یک شنبه 10 آذر 1392, 21:22 عصر
درصورتی که شما بخواین کار بزرگ تر از چند چیز عادی انجام بدین (برای مثال چندین صفحه متفاوت که هیچ ربطی به هم ندارن ) رو باز کنید تو یه وب برازر و برای هرکدوم کار بخصوصی انجام بدین تو رویداد document completed باید چنتا شرط بزارین که تو خیلی از موارد خسته کننده و سردرگم کننده میشه ... (این ساده ترین حالت نیازه) خیلی از موارد هست که در حال انجام کار بهش بر میخورین و میفهمید این کد بیشتر به دردتون میخوره ...
همچنین میشه از اوش شرط(بدونه حلقه) استفاده کنید و بفهمید صفحه کامل باز شده یا نه ... و خیلی موارد دیگه که اون کد بدرد بخورتره ...
البته تو وحله اول رویداد خوبه اما برخی از موارد برای کمتر شدن در و سر بهتره از این روش استفاده شه ..
من کاملا توجیه شدم.ممنون:لبخندساده:

newsinanas
یک شنبه 10 آذر 1392, 21:22 عصر
113400

چنین ارور برا چی هست؟

با تشکر

newsinanas
یک شنبه 10 آذر 1392, 21:24 عصر
به این صورت کدتون رو تغییر دادم و درست شد :لبخند::
While WebBrowser1.ReadyState <> WebBrowser1.ReadyState.Complete
Application.DoEvents()
End While
مشکل حل شد دستتون درد نکنه :قلب:

aliagamon
یک شنبه 10 آذر 1392, 21:36 عصر
تو اون حالت هم باید کار کنه چون من از اون روش استفاده میکنم تو کارام ... در هرصورت میتونستین با گذاشتن break pont ببینید مشکل چیه . ....:چشمک:

sagggad
دوشنبه 11 آذر 1392, 10:00 صبح
ضمنا برای قشنگ شدنش اگه از تایمر استفاده کردی ازProgress Bar هم استفاده کن!!!