سؤال

وبلدي WinForms عناصر التطبيق لديه علامة تبويب مع عنصر تحكم System.Windows.Forms.WebBrowser. هناك العديد من الضوابط التي تحدد الملكية .Url وWebBrowser ل، وعندما يعيد طلاء الشكل الذي يدعو طريقة .Refresh(WebBrowserRefreshOption.Completely) وWebBrowser ل.

وأحيانا، ومع ذلك، ويحصل على إعادة رسم شكل ولا يغير محتوى WebBrowser. أكسر على .Refresh( )، و.Url هو رابط السابق. ما الذي يحدث؟

ووفقا ل MSDN :

<اقتباس فقرة> إذا قمت بتعيين قيمة هذه الخاصية ومن ثم استرجاعها مرة أخرى على الفور، قد تكون القيمة التي تم استردادها مختلفة من القيمة المعينة إذا كان عنصر التحكم WebBrowser لم يتح لها الوقت لتحميل وثيقة جديدة.

وحسنا ليس هذا خاص؟ لماذا لا .Refresh( ) الانتظار حتى السيطرة تمت "لديه الوقت لتحميل وثيقة جديدة" قبل أن يعيد رسم؟ هل هناك أي طريقة لإجبار لهذا أن يحدث؟

هل كانت مفيدة؟

المحلول

وإلا إذا كنت تفعل شيئا خاصا جدا، فإنه لا معنى لإجبار البنك الدولي لإعادة رسم نفسه. وبما أنه من سيطرتها، ولها مقبض خاص بها، فهي قادرة تماما على إعادة طلاء نفسه كلما رأى ذلك ضروريا. منذ كنت مما اضطرها إلى إعادة رسم في لحظة هذا هو تماما متزامنة مع ReadyState عن لها، والحصول على أمر متوقع على رابط "القديمة".

نصائح أخرى

وحاول إضافة معالج أحداث إلى التعليمات البرمجية التي تدير عندما "DocumentCompleted" وقع الحدث. ثم يضاف تحديث الرمز الخاص بك في هناك. وهناك بعض الأمثلة من التعليمات البرمجية هنا في MSDN. إذا كنت تفعل ذلك بهذه الطريقة أنك لن تخسر أي وقت التخمين إذا كان تحميل الصفحة، ويمكن أن تستمر المعالجة في أقرب وقت انها مستعدة.

http://msdn.microsoft كوم / EN-US / مكتبة / system.windows.forms.webbrowser.documentcompleted.aspx

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top