Laden...

Newsticker realisieren: Text von rechts nach links durchlaufen lassen

Erstellt von ph1l vor 18 Jahren Letzter Beitrag vor 16 Jahren 4.003 Views
P
ph1l Themenstarter:in
12 Beiträge seit 2005
vor 18 Jahren
Newsticker realisieren: Text von rechts nach links durchlaufen lassen

Guten Tag,
Ich schreibe gerade folgendes Programm:
Ein Newsticker der ein RSS-File ausliest, es entsprechend formatiert und es in Form eines Newstickers ausgibt (Also eine automatisch gescrolltes Label).
Nun ist meine Idee den Effekt des Scrollens zu erwirken in dem ich einfach das Label Pixel für Pixel verschiebe. Gibt es dafür auch eine ellegantere Variante oder nur diese?

830 Beiträge seit 2005
vor 18 Jahren

Hallo ph1l,

hoffe ich verstehe dich nicht falsch:

Was soll das Pixelweise verschieben des Labels bringen ?
Das Label zeigt einen Text an, der in Text-Eigenschaft hinterlegt ist; egal welche Position das Label hat.
Ich würde wahrscheinlich einen Timer nehmen, der alle so-und-so viele ms vom string vorne ein Zeichen abschneidet und hinten eins anhängt. Diesen string einem Label zugewiesen und es sieht so aus, als würde der Text von rechts nach links laufen.

Gruss
Friedel

Ohne Ziel ist auch der Weg egal.

140 Beiträge seit 2004
vor 18 Jahren

Hallo,

hab das zufällig mal vor ein paar Tagen bei CodeProject gesehen.

A C# Scrolling Text Control

Der hängt den Buchstaben einfach von Anfang, ans Ende. Denke das ist etwas besser als dein Vorschlag. Wenn du nämlich das Teil verschiebst bist du doch irgendwann am Ende deiner Form (oder hab ich jetzt was falsch verstanden).

Gruß
Snwwolf

P
ph1l Themenstarter:in
12 Beiträge seit 2005
vor 18 Jahren

Also grundsätzlich hört sich das alles natürlich gut an allerdings müsst ihr wissen, dass ich meine Inhalte aus dem RSS in mehrere Arraylisten schreibe (zwecks dynamischen Arrays). Da ist es schwierig festzulegen immer ein Zeichen abzuschneiden!

Mir ist auch schon das Problem aufgefallen, das das Label ja irgendwann mal fertig ist, aber diesen Zustand kann man bestimmt abfangen und das Label wieder neu durchlaufen lassen! Das ist immoment die einzige Idee die ohne Probleme durchführbar wäre!

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo ph1l,

wo ist dass den schwierig? So oder so steht doch den anzuzeigenden Text im Label, richtig?

lbl.Text = lbl.Text.Substring (1) + lbl.Text.Substring (0, 1);

herbivore

P
ph1l Themenstarter:in
12 Beiträge seit 2005
vor 18 Jahren

Nun ja wenn ich das so nach deinem Beispiel mache (natürlich in einer Schleife) funktioniert das net!


lbl_output.Text = output;	
for(int j=0;j<output.Length;j++){
  lbl_output.Text = lbl_output.Text.Substring (j+1) + lbl_output.Text.Substring (j, j+1);
}

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo ph1l,


lbl_output.Text = output;    
for(int j=0;j<output.Length;j++){
  lbl_output.Text = lbl_output.Text.Substring (1) + lbl_output.Text.Substring (0, 1);
  Thread.Sleep (200)
  Application.DoEvents ();
}

sollte gehen.

herbivore

PS: DoEvents ist Mist. Man sollte besser einen Timer verwenden.

P
ph1l Themenstarter:in
12 Beiträge seit 2005
vor 18 Jahren

Ähm allerdings die Werte in den Klammern wieder mit der Variable die in der FOR-Schlafe hochgezählt wird austauschen oder?! Sonst bringts doch gar nix.

Noch dazu was soll das Thread sein? Ich hab das net als Thread gestartet wenn du das meinst!

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo ph1l,

hast du es denn schon mal ausprobiert? Bis zum Beweis des Gegenteils stehe ich zu meinen Konstanten.

Wegen Thread.Sleep könnte ein Blick in die Doku Aufklärung bringen. Auch zu dieser Anweisung stehe ich [in dem Sinne, dass Thread.Sleep nichts damit zu tun hat, dass man einen neuen Thread gestartet haben muss]. 🙂

herbivore

P
ph1l Themenstarter:in
12 Beiträge seit 2005
vor 18 Jahren

Tut mir leid ich beherrsche leider C# nicht besonders meine Programmierfähigkeiten liegen eher bei Java deshalb hatte ich eben den Hänger mit dem Thread! Habs hinbekommen vielen Dank!

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo ph1l,

irgendwie waren meine Programmierfähigkeiten 2005 auch noch nicht so ganz auf der Höhe. Zumindest, was die Verwendung von DoEvents und Thread.Sleep im GUI-Thread betrifft. Heute würde ich das per Timer machen. Mehr Infos unter [FAQ] Warum blockiert mein GUI?

herbivore

4.207 Beiträge seit 2003
vor 16 Jahren

Ein bisschen OT - was ich total cool fände, wäre ein Newsticker, der in der Taskleiste scrollt und die Neuigkeiten anzeigt ...

Wie sieht das denn bei Deinem aus? Alternativ - kennt jemand ein entsprechendes Tool?

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo Golo,

schreib ein Form, minimiere das und programmiere es so, dass es minimiert bleibt. Lass dann den Titel des Forms per Timer rotieren und schon hast du, was du willst.

herbivore

4.207 Beiträge seit 2003
vor 16 Jahren

Naja, ich hatte mir das schon etwas stylischer vorgestellt ... eher so wie die Desktopsuche, dass das Label direkt in der Taskleiste sitzt als Explorer-Extension ...

Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de

A
18 Beiträge seit 2006
vor 16 Jahren

hi,

ich glaub jetzt darf keiner mehr fragen wie man einen newsticker erstellt 🙂

Beispiel code zum erstellen eines NewsTicker

Newsticker in c# windows program

zufällig bin ich auf diesen beitrag gestoßen, weil ich eine lösung suche labels mehrfarbig darzustellen. (habs immer noch nicht gefunden)

gruss
ahmedr

So haben sie mit dem Kopf und dem Mund den Fortschritt der Menschheit geschaffen. Doch davon mal abgesehen und Bei Lichte betrachtet sind sie im Grund noch immer die alten Affen.

Kästner

Gelöschter Account
vor 16 Jahren

was meinst du mit mehrfarbig?

A
18 Beiträge seit 2006
vor 16 Jahren

z.b der Titel sollte rot und der description sollte blau sein.

So haben sie mit dem Kopf und dem Mund den Fortschritt der Menschheit geschaffen. Doch davon mal abgesehen und Bei Lichte betrachtet sind sie im Grund noch immer die alten Affen.

Kästner

Gelöschter Account
vor 16 Jahren

2 möglichkeiten.

  1. ein usercontrol mit 2 labels.
  2. label erben und onpaint überschreiben.

ersteres ist für anfänger einfacher, zweiteres ist sinnvoler, da man dabei einiges an overhead vermeidet.

A
18 Beiträge seit 2006
vor 16 Jahren

die 2. mögl. ist für mich schlüssiger als die 1.

Galileo Openbook Visual C# 2005

vor lauter bäumen sieht man den wald nicht!

würde da nicht mein arbeitsspeicher explodieren 8o
ich frag deshalb weil ich ca. 100 news strings habe. ich müsste 100 news neu zeichnen.

So haben sie mit dem Kopf und dem Mund den Fortschritt der Menschheit geschaffen. Doch davon mal abgesehen und Bei Lichte betrachtet sind sie im Grund noch immer die alten Affen.

Kästner

Gelöschter Account
vor 16 Jahren

bei 100 string definitiv möglichkeit 2 nehmen.