WebBrowserControl قم بالتمرير إلى الأسفل
-
09-06-2019 - |
سؤال
أنا أعمل على تطبيق دردشة بسيط باستخدام System.Windows.Forms.WebBrowser Control لعرض الرسائل بين المستخدم والمستلم.كيف يمكنني جعل عنصر التحكم يقوم بالتمرير تلقائيًا إلى الأسفل في كل مرة أقوم فيها بتحديث DocumentText الخاص بعنصر التحكم؟
المحلول
شكرًا يا رفاق - لقد قمت بالتصويت لصالحكما ولكن لم ينجح أي منهما في حل موقفي.ما انتهى بي الأمر إلى القيام به هو
webCtrl.Document.Window.ScrollTo(0, int.MaxValue);
نصائح أخرى
سأستخدم خاصية AutoScrollOffset وأضعها في الجزء السفلي الأيسر من عنصر تحكم WebBrowser، لذلك شيء من هذا القبيل:
webCtrl.AutoScrollOffset = new Point(0, webCtrl.Height);
من المحتمل أن يكون هذا مبالغة، ولكن يمكنك أيضًا استدعاء البرنامج النصي في عنصر تحكم WebBrowser ثم استخدام خصائص التمرير الخاصة بعلامة النص.أو طريقة التمرير إلى النافذة.
لاستدعاء البرنامج النصي، يحتوي عنصر التحكم WebBrowser على خاصية Document التي تمثل كائن المستند من DOM.يحتوي على طريقة تسمى InvocScript يمكنك من خلالها تمرير سلسلة من JavaScript ليتم تنفيذها.
لكن...إذا كانت خاصية AutoScrollOffset تعمل...نعم، سأستخدم ذلك بدلاً من الدخول في JavaScript :)
يمكنك الحفاظ على موضع التمرير في الأعلى، وإدراج رسالة جديدة في الأعلى.
لا تحتاج إلى التمرير إلى الأسفل، فهو يشبه تويتر :)
user2:
new message ← a new message is insert on top
user1:
old message
public virtual void ScrollMessageIntoView()
{
System.Windows.Forms.Application.DoEvents();
if (browser == null || browser.IsDisposed)
return;
if (browser.Document == null)
{
browser.Document.Window.ScrollTo(0,
browser.Document.Body.ScrollRectangle.Height);
}
}