Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

19.07.2011, 19:52

Bei Webbrowser Steuerelement mit Scrollbars arbeiten (.net)

Hallo alle miteinander (erneut).

Ich habe leider wieder ein Problem, über dessen Lösung ich nicht wirklich etwas im Internet finden konnte.
Wie ihr vermutlich wisst, ist es möglich, einem Webbrowser (.net) Steuerelement Scrollbars hinzuzufügen.

Nun zu meinem Problem:
Ich möchte einen Chat programmieren.
Leider ist mir unklar, wie man die Scrollbars des Webbrowser verwenden könnte, ich würde gerne folgendes erreichen:

Wenn eine neue Nachricht eintrifft, wird der Webbrowser aktualisiert (Seite wird neu geladen, via Navigate). Nun hätte ich gerne, dass bei jeder neuen Nachricht heruntergescrollt wird, wenn der User sich nicht gerade den Chatverlauf ansieht.

Zur Verdeutlichung:
(vb.net, c# code element verwendet, da basic element offenbar nicht verfügbar)

C#-Quelltext

1
2
3
4
5
6
7
8
//Vor der Aktualisierung 
dim scrolled as integer = Webbrowser1.Scrollbars.GetScrolledIn% 

aktualisieren und reloaden 

If scrolled > 95 Than 
ScrollDown() 
End If


unterstrichene Befehle existieren nicht, meine Frage ist, wie man derartiges verwirklichen könnte

2

19.07.2011, 21:35

google ;): webbrowser windows forms "scroll position"
führt zu
http://groups.google.com/group/microsoft…6c7506?lnk=raot
c#
HtmlElement body = webBrowser1.Document.GetElementsByTagName("body")[0];
if (body != null) scrollRect = body.ScrollRectangle;
um die scrollposition zu erhalten und
WebBrowser.Document.Window.ScrollTo
um zu scrollen

über das Document kannst du übrigens auch neue Chat-Elemente einfügen ohne die Seite neu zu laden.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Chromanoid« (19.07.2011, 22:00)


3

20.07.2011, 09:16

Oh gott, ich bin wohl der schlechteste googler der welt.
Wieder vom handy aus hier, ich sehe mir die lösung gleich an...
Vielen Dank!

4

20.07.2011, 12:57

ok ich habs mir angesehen...
die erste zeile:

Quellcode

1
Dim body As HtmlElement = WebBrowser1.Document.GetElementsByTagName("body")(0)


führt zu:

Zitat

NullReferenceExeption was unhandled
Object reference not set to an instance of an object.

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

5

20.07.2011, 13:06

Dann wird wohl WebBrowser1, Document, oder die Rückgabe von GetElemtnsByTagName() null (bzw. in deinem Fall Nothing) sein...

6

20.07.2011, 13:17

oh hab gerade rausgefunden, wie man das beheben kann

Ich habe eine "dummy.html" erstellt mit dem Inhalt

Quellcode

1
<html>Bitte warten...</html>


und diese ganz am Anfang angesteuert (navigate("website.xxx"))

7

20.07.2011, 13:32

Ok also...
Ich hab jetzt die Daten dieses "Scrollrects".
Aber wie kann man herausfinden, wie weit gescrollt wurde?
Man kann ja nur die Position sehen, aber nicht die maximal mögliche Position (ganz nach unten gescrollt), oder?

8

20.07.2011, 14:09

Basiert das Steuerelement nicht auf den IE?
Möglicherweise ist daher eine Lösung via Javascript einfacher?
fka tm

9

20.07.2011, 14:40

@TrikkieMikkie so ist es. Aber man hat durch Document ja praktisch den gleichen Zugriff wie mit javascript.

Die maximal mögliche Position müsstest du über
body.scrollHeight erreichen können. Du hast eigentlich alle Eigenschaften, die du auch über javascript erreichen kannst zur Verfügung. Wenn du also mal nicht weiter weißt, schau dir an wie man es in javascript macht und bau es dann per VBA nach oder implementiere die Funktionen direkt in javascript und führe sie via Document.Navigate("javascript:function();"); aus.

10

20.07.2011, 17:50

Die maximal mögliche Position müsstest du über
body.scrollHeight erreichen können.


Die Variable existiert nicht :(

Denkt ihr, dass die Js Lösung von der Performance her schneller wäre?

Werbeanzeige