Text von unten nach Oben durchscrollen

  • VB.NET

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    Text von unten nach Oben durchscrollen

    Hallo,


    ich schreibe mir für ein Programm grad ne about... Aber es ist mir zu Langweilig wenn der Text da schlicht steht und fertig... ich würd ihn gerne von unten nach oben durchscrollen lassen...

    Was ich dafür benutze ist mir egal (Label, Textbox, Listbox was weis ich :D)... weis vllt einer ne möglichkeit?

    MfG
    Ich hatte noch garnichts.. ich wusste nichtmal ne möglichkeit wies überhaupt geht, nur wie ichs haben wollte...

    Was wäre denn am einfachsten...?

    // ja so in etwa, wie bei firefox..

    // habs mal mit ner Listbox probiert:

    VB.NET-Quellcode

    1. Threading.Thread.Sleep(500)
    2. ListBox1.Items.Insert(0, "blabla")
    3. Threading.Thread.Sleep(500)
    4. ListBox1.Items.Insert(0, "blub")
    5. Threading.Thread.Sleep(500)
    6. ListBox1.Items.Insert(0, "tralala")
    7. Threading.Thread.Sleep(500)
    8. ListBox1.Items.Insert(0, "wuhuuu")


    Sieht doof aus....

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DJ Re-DarK“ ()

    MultiLine von TextBox auf True setzen, in code gewünschten text schreiben
    Link habe oben gepostet. Stelle Timer/Sleep auf 5,10 ms.

    Diese Code fügst z.b in Timer event zu:

    VB.NET-Quellcode

    1. //API Deklaration
    2. //Constanten Deklaration
    3. SendMessage Text1.hWnd, WM_VSCROLL, SB_LINEUP, 0&


    fertig !
    machs wenn du z.b. 2 labels hast so:
    größe der form: 658; 471
    location von label1: 289; 398
    location von label2: 289; 411
    label2 visible = false
    2 timer, interval 100, enabled = false
    und der code:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    3. Label1.Top -= 5
    4. End Sub
    5. Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    6. Label2.Top -= 5
    7. End Sub
    8. Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
    9. Timer1.Enabled = True
    10. Label2.Visible = True
    11. Timer2.Enabled = True
    12. End Sub
    13. End Class

    lg Gugi
    habs nun so gemacht:

    n pannel hingezeichnet, dann in eine variable die position des labels gespeichert (wos am ende sein soll):


    VB.NET-Quellcode

    1. Public Class about
    2. Dim finishpos As String ' um die endposition zu haben
    3. Private Sub about_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Loaf
    4. finishpos = Label8.Location.Y - Label8.Height - 2 'bis wohin soll gescrollt werden?
    5. Label8.Location = New Point(Label8.Location.X, 190) ' ganz ans ende der form setzen
    6. Timer1.Start()
    7. End Sub
    8. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    9. If Label8.Location.Y = finishpos Then
    10. Timer1.Stop()
    11. Else
    12. Label8.Location = New Point(Label8.Location.X, Label8.Location.Y - 1) 'position setzen
    13. End If
    14. End Sub
    15. End Class


    Funktioniert 1a...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „DJ Re-DarK“ ()

    DJ Re-DarK schrieb:

    habs nun so gemacht:

    n pannel hingezeichnet, dann in eine variable die position des labels gespeichert (wos am ende sein soll):


    VB.NET-Quellcode

    1. Public Class about
    2. Dim finishpos As String ' um die endposition zu haben
    3. Private Sub about_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Loaf
    4. finishpos = Label8.Location.Y - Label8.Height - 2 'bis wohin soll gescrollt werden?
    5. Label8.Location = New Point(Label8.Location.X, 190) ' ganz ans ende der form setzen
    6. Timer1.Start()
    7. End Sub
    8. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    9. If Label8.Location.Y = finishpos Then
    10. Timer1.Stop()
    11. Else
    12. Label8.Location = New Point(Label8.Location.X, Label8.Location.Y - 1) 'position setzen
    13. End If
    14. End Sub
    15. End Class


    Funktioniert 1a...

    1. du kannst statt timer1.start das nehmen:

    VB.NET-Quellcode

    1. timer1.enabled = true

    und was bringt das eigentlich in Form_load? da kannst direkt den timer auf enabled setzen

    lg Gugi
    DirectX: -> Komplexer, Noch mehr Möglichkeiten, am "Perfomantesten" :D
    Bei GDI+ flackert sowas bei mir, ich mag DirectX mehr ;)

    Aber ich Blick beim Code auch nicht durch (Du nimmst da Sachen Minus, die ich nicht nachvollziehen kann )
    Auf jeden solltest du nicht String für deine "finishpos" benutzen (Ich persöhnlich würde das als Point deklarieren, oder vllt. noch als Integer, aber nicht als String)






    Mfg.
    SAR
    DirectX ist hierbei aber mehr als vollkommen unnötig und ob du bei bestimmten Effekten die bessere Performance hinbekommst, kommt auf die Art der Programmierung an...

    GDI+->SetStyle: UserPaint+OptimizedDoubleBuffer+AllPaintingInWMIPaint = True -> kein Flackern
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---