Mausrad verwenden

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von wolfjuli.

    Mausrad verwenden

    Hi Leute,

    bin noch eher ein Neuling in VB 2008 (hab bisher immer in QuickBASIC 4.5 Geprogged, was ich, denke ich, schon sehr gut konnte) und hab daher eine Frage: Wie kann ich das Mausrad verwenden? Ich hab die Suche verwendet, und stieß dabei auf den e.Delta befehl. Leider worked der bei mir nicht, da ich nicht weiß, wie ich mit dem Umgehen soll (weder als MsgBox noch in einem Textfeld kann ich ihn anzeigen, auch nicht mit der ToString erweiterung -> Runtime-Error). Ich hab zwar die MouseWheel-Funkti0on auch schon gefunden, hab aber keinen Dau wie ich mit der umgehen soll (hier hab ich auch schon irgendwas mit Up und Down gefunden, kA aber wo das hingehört).

    also wie ihr seht, noch absoluter neuling und am meisten würdet ihr mir helfen wenn ihr mir einen Beispielcode aus einem euer Programme zeigt.

    Vielen Dank im Vorraus

    Julian

    PS: Ich hab auch schon den Eintrag der FAQ gefunden, in dem man die Registry manipuliert. Auch das funzte nicht, da ich keinen Add-In Manager fand (auch nicht in der Sucher der Hilfe)
    Hallo wolfjuli,
    ich denke der Knackpunkt ist zu verstehen daß Delta (daher der Name!) nicht einen absoluten Wert enthält, sondern eine relative Veränderung durch das Drehen des Mausrades, seit dem letzten Mal. Je größer die Veränderung, desto schneller / mehr wurde das Mausrad gedreht. Ob das Mausrad nach oben oder unten gedreht wurde, wird demzufolge dadurch ausgedrückt daß der Wert für Delta entweder größer oder kleiner 0 ist. Ein Beispiel: (Progressbar1 auf die Form zeichnen, code einfügen, ausführen)

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. ProgressBar1.Minimum = 0
    4. ProgressBar1.Maximum = 100
    5. ProgressBar1.Value = 0
    6. End Sub
    7. Private Sub Form1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseWheel
    8. If e.Delta > -1 Then
    9. If ProgressBar1.Value < 100 Then
    10. ProgressBar1.Value += 5
    11. End If
    12. Else
    13. If ProgressBar1.Value > 0 Then
    14. ProgressBar1.Value -= 5
    15. End If
    16. End If
    17. End Sub
    18. End Class

    Grüße,
    f0x
    Danke für die schnelle antwort, dein Beispiel funktioniert genau so wie ich es mir vorgestellt habe. Jetzt hab ich aber folgendes Problem:

    ich wollte einfach zum Üben eine Bildanzeige mit Zoommöglichkeit programmieren. Funktioniert auch alles. Ich hätte nur gerne, dass ich das bild nach oben und unten scrolle, wenn ich das Mausrad drehe. Das problem ist, wenn ich die Trackbar zum Zoomen verwende, dann hängt das mausrad dort "fest" und es kümmert sich nur mehr um diese, nicht aber um das scrollen der leisten. ich hab dan folgenden code ausprobiert:

    VB.NET-Quellcode

    1. Private Sub TrackBar1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TrackBar1.MouseWheel
    2. If e.Delta > -1 Then
    3. If VScrollBar1.Value < VScrollBar1.Maximum Then
    4. VScrollBar1.Value += 5
    5. End If
    6. Else
    7. If VScrollBar1.Value > 0 Then
    8. VScrollBar1.Value -= 5
    9. End If
    10. End If
    11. End Sub


    läuft aber auch nicht so wie erhoft :( (es scrolled die track bar und die VScrollbar, wobei das bild seine Position nicht verändert, was aber logisch ist, weil ich es ja nicht mit der Scrollbar synchronisiere)

    Hier ist der gesamte code, den ich geschrieben habe, der eiegentlich auch, bis auf diesen Teil, funktioniert:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim pbreite
    3. Dim phoehe
    4. Dim last
    5. Dim zahl As Double
    6. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    7. pbreite = Me.PictureBox1.Width
    8. phoehe = Me.PictureBox1.Height
    9. End Sub
    10. Private Sub durchsuchen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles durchsuchen.Click
    11. Me.OpenFileDialog1.ShowDialog()
    12. If Me.OpenFileDialog1.CheckFileExists = True Then
    13. Me.TextBox1.Text = Me.OpenFileDialog1.SafeFileName
    14. Me.PictureBox1.ImageLocation = Me.TextBox1.Text
    15. End If
    16. If PictureBox1.Width > 0 Then VScrollBar1.Maximum = PictureBox1.Width - pbreite
    17. If PictureBox1.Height > 0 Then HScrollBar1.Maximum = PictureBox1.Height - phoehe
    18. End Sub
    19. Private Sub TrackBar1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles TrackBar1.MouseLeave
    20. End Sub
    21. Private Sub TrackBar1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles TrackBar1.MouseWheel
    22. If e.Delta > -1 Then
    23. If VScrollBar1.Value < VScrollBar1.Maximum Then
    24. VScrollBar1.Value += 5
    25. End If
    26. Else
    27. If VScrollBar1.Value > 0 Then
    28. VScrollBar1.Value -= 5
    29. End If
    30. End If
    31. End Sub
    32. Private Sub TrackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.Scroll
    33. Me.PictureBox1.Width = pbreite + Me.TrackBar1.Value
    34. Me.PictureBox1.Height = phoehe + Me.TrackBar1.Value
    35. End Sub
    36. Private Sub VScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles VScrollBar1.Scroll
    37. PictureBox1.Location = New Point(PictureBox1.Location.X, 0 - VScrollBar1.Value)
    38. End Sub
    39. Private Sub HScrollBar1_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) Handles HScrollBar1.Scroll
    40. PictureBox1.Location = New Point(0 - HScrollBar1.Value, PictureBox1.Location.Y)
    41. End Sub
    42. Private Sub Form1_MouseWheel(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseWheel
    43. If e.Delta > -1 Then
    44. If VScrollBar1.Value < VScrollBar1.Maximum Then
    45. VScrollBar1.Value += 5
    46. End If
    47. Else
    48. If VScrollBar1.Value > 0 Then
    49. VScrollBar1.Value -= 5
    50. End If
    51. End If
    52. End Sub
    53. Private Sub PictureBox1_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.SizeChanged
    54. If PictureBox1.Width > 0 Then VScrollBar1.Maximum = PictureBox1.Width - pbreite
    55. If PictureBox1.Height > 0 Then HScrollBar1.Maximum = PictureBox1.Height - phoehe
    56. End Sub
    57. End Class


    Vielen Dank

    Julian

    Ps: Ach ja, warum schreibt man eigentlich VScrollBar1.Value -= 5, also "-="??

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „wolfjuli“ ()

    Hallo Julian,
    muß mir das morgen nochmal anschaun, bin gerade zu müde.
    Ps: Ach ja, warum schreibt man eigentlich VScrollBar1.Value -= 5, also "-="??

    Das nennt man dekrementieren. In VB6 hat man das noch so geschrieben: VScrollBar1.Value = VScrollBar1.Value -5
    Diese Schreibweise ist auch unter vb.net noch möglich. Also was dir lieber ist. Entsprechend gilt übrigens auch +=
    f0x

    roddy schrieb:

    Ich denke, was bsHobbit damit sagen wollte ist:

    Aus i=i+1 folgt, wenn man für i 0 einsetzt, 0=1, was ja nicht stimmt.

    Der Mathematiker der das glaubt, weiß aber halt nicht, daß in VB ein "=" nicht nur ein Vergleichsoperator ist, sondern (je nach Kontext) auch ein Zuweisungsoperator sein kann.