HScrollBar1_Move-Prozedur ruft nicht auf

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    HScrollBar1_Move-Prozedur ruft nicht auf

    Hallo,

    hab ein Problem mit HScrollBar1_Move-Prozedur.
    Während _Scroll gut funktioniert und Koordinaten()-Subroutine aufruft, tut es _Move nicht-die Seite lässt sich nicht einmal laden.
    So muss ich in _Move die Koordinaten() auskommentieren, damit ich die Seite überhaupt laden kann und _Scroll ausprobieren kan.

    Was mach ich. bitte, falsch- wie muss es richtig sein?

    Für jeden Tipp bin ich dankbar.

    Den Code habe ich auf das wesentliche reduziert:
    >>>>>>>>>>>>>>>>>>
    x1,x2,y1,y2-globale Variablen deklariert und in Load() initiiert
    g_Line as Bitmap,..., Picture1.Image=g_Line in Load()
    HScrollBar1.Maximum,Minimum,Value eingestellt

    Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
    x1 = CDbl((HScrollBar1.Value - 80) * 2)
    y1 = CDbl((HScrollBar1.Value - 80) * 2)
    Koordinaten() 'dieser Aufruf funktioniert
    End Sub

    Private Sub HScrollBar1_Move(ByVal sender As Object, ByVal e As System.EventArgs) Handles HScrollBar1.Move
    x1 = CDbl((HScrollBar1.Value - 80) * 2)
    y1 = CDbl((HScrollBar1.Value - 80) * 2)
    Koordinaten() 'dieser Aufruf funktioniert nicht-warum?
    End Sub

    Private Sub Koordinaten()
    Dim g As Graphics = Graphics.FromImage(g_Linie)
    g.Clear(Color.White)
    g.DrawLine(Pens.Red, x1,y1,x2,y2)
    PictureBox1.Refresh()
    g.Dispose()
    End Sub
    <<<<<<<<<<<<<<<<<<

    Ende, danke
    Hallo,



    natürlich nicht, ich will den Schieber verschieben und nicht das ganze Steuerelement.

    Aber ich berufe mich da auf M.Koflers Buch, wo es heißt:

    "...Während der Schiebebalken mit der Maus bewegt wird, treten Move-Ereignisse auf."

    Und ein simples Beispiel samt Code ist auch dabei.

    Wie meinst du das?

    Gibt es da was anderes, was man aufrufen sollte? Wie heißt das entsprechende Event dann??



    Danke

    Beispiel aus dem Buch

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim rand As New Random()
    VScrollBar1.Value = rand.Next(255)
    VScrollBar2.Value = rand.Next(255)
    VScrollBar3.Value = rand.Next(255)
    ChangeColor()
    End Sub

    Private Sub VScrollBar1_Move(ByVal sender As Object, ByVal e As System.EventArgs) Handles VScrollBar1.Move
    ChangeColor()
    End Sub
    Private Sub VScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VScrollBar1.Scroll
    ChangeColor()
    End Sub
    Private Sub VScrollBar2_Move(ByVal sender As Object, ByVal e As System.EventArgs) Handles VScrollBar2.Move
    ChangeColor()
    End Sub
    Private Sub VScrollBar2_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VScrollBar2.Scroll
    ChangeColor()
    End Sub
    Private Sub VScrollBar3_Move(ByVal sender As Object, ByVal e As System.EventArgs) Handles VScrollBar3.Move
    ChangeColor()
    End Sub
    Private Sub VScrollBar3_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VScrollBar3.Scroll
    ChangeColor()
    End Sub
    Private Sub ChangeColor()
    Dim r, g, b As Integer
    r = VScrollBar1.Value
    g = VScrollBar2.Value
    b = VScrollBar3.Value
    picEGraphic.BackColor = Color.FromArgb(r, g, b)
    End Sub


    Nach diesem Muster wollte ich mit meinem Graphic-Objekt arbeiten

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hybernate5“ () aus folgendem Grund: vestehe nicht wie man antwortet- hab was falsches gemacht, obwohl aus Button:Antwort geklickt. Außerden verstehe ich nicht, warum ich eine halbe Stunde warten muss, und erst danach meine Antwort schreiben kann. Intuitiv ist das irgendwie nicht. Ich will diesen Beitrag löschen und den eigentlichen Beispiel-Code eingeben. Danke fürs Verständnis

    welches entsprechende Event? Sollen wir jetzt raten? Du musst erklären, was du machen willst und was das gesuchte Event leisten soll. Sonst können wir dir keine Vorschläge anbieten. Das Scroll-Event hast du ja schon, mehr braucht man im Normalfall gar nicht

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Einfach auf das Control draufklicken:

    VB.NET-Quellcode

    1. Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
    2. ' dies hier ausfüllen:
    3. Dim pos As Integer = HScrollBar1.Value
    4. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Am sinnigsten, wenn man auf eine Wert-Änderung lauschen möchte, ist das ValueChanged-Event.


    Wäre nach so langer Zeit vielleicht ein neues Thema wert. Aber es geht um das empfohlene ValueChanged Event:

    VB.NET-Quellcode

    1. Private Sub VS_ValueChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles VS.ValueChanged
    2. Label1.Text = CStr(VS.Value.ToString)
    3. End Sub


    VS ist vom Typ VScrollBar.

    Nichts passiert. Wenn ich im umgekehrten Sinne bei der Value-Eigenschaft im Entwurf einen anderen Wert eingebe, dann bewegt sich der Rollbalken in der zugehörigen Form. So viele Möglichkeiten etwas falsch zu machen gibt es doch gar nicht oder?

    Das Problem hat sich aufgeklärt. Ich hatte aus Versehen eine zweite VScrollBar platziert und habe immer mit der falschen gespielt. Tut mir leid

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „drschef“ ()

    Ganz Deiner Meinung.

    drschef schrieb:

    Wäre nach so langer Zeit vielleicht ein neues Thema wert

    aber auch mit

    drschef schrieb:

    So viele Möglichkeiten etwas falsch zu machen gibt es doch gar nicht

    Ich hau mir n Label, n VScroll auf's Form, schreibe Deinen Code dazu und siehe da, es klappt. Geht beim Pfeilanklicken, in-den-Scrollbalken-reinklicken und Positionsblockverschieben. CStr(VS.Value.ToString) ist allerdings moppelt gedoppelt. Durch ToString isses ja schon ein ebensolcher. Wozu dann noch CStr dazuhauen?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    drschef schrieb:

    Wäre nach so langer Zeit vielleicht ein neues Thema wert
    Bitte dann auch einhalten. ;)

    Thema geschlossen.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!: