Scrollen durch Mauszeiger

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Scrollen durch Mauszeiger

    Hallo Leute!
    Ihr kennt das ja, wenn man z.B: in der TextBox die Linke Maus haltet, weil man was markieren möchte, und man geht mit der Maus nach unten oder nach oben, scrollt es von alleine nach unter oder nach oben.

    Wie stelle ich die Funktion an?
    Nehmen wir mal Panel und UserControl.
    Die Panel ist viel größer als die UserControl.
    Wie stelle ich es an, wenn Die linke Maus gehalten wird, und man geht mit der Maus nach unten, so das die Panel automatisch nach oben geht, damit man die untere Panel erreichen kann. ?(

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

    Ist das Panel im UserControl oder ist das UserControl im Panel?
    Kannst Du mal bitte eine ungefähre Zeichung des Ist-Zustands hochladen? Warum ist das UserControl nicht größer als das Panel? Gibt es ScrollBars?

    Moderatorenanmerkung: Vergib zeitnah einen aussagekräftigen Titel. Scrollen hat viel zu wenig Aussagekraft. Es beschreibt Dein Problem nicht. erledigt
    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.

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

    Scrollen durch Mauszeiger

    Hallo Panel ist im UserControl
    Ich habe leider keine Zeichnung
    Doch Scrollbar existiert und funktioniert.
    Es ist so ich versuche ein Benutzerelement zu erstellen mit ein mit Bilder.
    Picturebox befindet sich per Code Erstellung auf dem Panel.
    je mehr Bilder eingetragen werden, um so Größer wird der Panel.
    Ist der Panel größer als UserControl, wird Scrollbar angezeigt.
    Ich habe sogar eine Funktion eingebaut um die Bilder zu markieren.
    nun wenn ich die Bilder markieren will und die Bilder sind nicht Sichtbar, muss entsprechen gescrollt werden.
    da ist mir die Idee gekommen, wie beim TextBox oder sogar hier im Forum wo ich gerade schreibe, kann man markieren und wenn unten angekommen ist, aber das war nicht der ganze Text, wird automatisch nach unten gescrollt während man markiert.

    Oder Besser zu erklären was ich möchte, nehme diese Internet Seite wo du gerade bist und gehe ganz nach oben, klicke auf die Linke taste und halte Sie, und fahre mit der Maus nach unten.
    Es fängt an zu markieren und die Seite geht nach unten.
    Das meine ich, leider weiß ich nicht wie das benannt wird.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „tommy“ ()

    1. Thementitel anpassen! erledigt
    2. Habe mit einem Trick erstmal das Autoscrollen simuliert. Sobald man im reinen Panel ist, also nicht über einem anderen Control innerhalb des Panels ist, kann man so autoscrollen (erstmal ohne MouseButton):

    VB.NET-Quellcode

    1. Private Sub ScrollUp(sender As Object, e As MouseEventArgs)
    2. Using c As New Control With {.Parent = Panel1, .Top = -1, .Height = 1}
    3. Panel1.ScrollControlIntoView(c)
    4. c.Parent = Nothing
    5. End Using
    6. End Sub
    7. Private Sub ScrollDown(sender As Object, e As MouseEventArgs)
    8. Using c As New Control With {.Parent = Panel1, .Top = Panel1.Height, .Height = 1}
    9. Panel1.ScrollControlIntoView(c)
    10. c.Parent = Nothing
    11. End Using
    12. End Sub
    13. Private Sub Panel1_MouseMove(sender As Object, e As MouseEventArgs) Handles Panel1.MouseMove
    14. If e.Y < Panel1.Height * 0.1 Then ScrollUp(sender, e)
    15. If e.Y > Panel1.Height * 0.9 Then ScrollDown(sender, e)
    16. End Sub


    ##########

    nächster Schritt wär natürlich, dass Pseudoscrollcontrol permanent existent zu machen und immer nur seine Position entsprechend zu setzen oder gar gleich eine ScrollablePanel-Klasse zu erzeugen, welches jenes Control schon von Haus aus enthält.
    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.

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

    Hallo VaporiZed!
    Ich hoffe, das mit dem Thementitel besser ist.
    Ich weiß sonst nicht wie ich es schreiben soll, da ich leider nicht weiß, wie der korrekte Bezeichnung dieser Funktion ist.
    Und Danke für den Code aber es ist nicht das was ich suche.
    Ich glaube du hast meine frage falsch verstanden.
    Mit dem Scrollen hat nichts mit Scrollbar und auch nicht mit Mousewheel, sprich Mausrad direkt zu tun.
    Mehr als Erklären und Beschreiben kann ich es leider nicht.

    Aber Herzlichen Dank für deine Bemühungen :thumbup:
    Mein Code scrollt das zu kleine Panel automatisch nach oben oder unten, wenn man am oberen oder unteren Rand des Panels ist, ohne (erstmal), dass man etwas klickt.
    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.
    Hmm Sorry aber es hat nicht gemacht.
    Ich habe dir ein fertiges Code angehängt.
    Vielleicht habe ich da ein Denk Fehler
    Ich habe Test weise Panel mit dem Name panUser genommen, es soll den später ein UserControl sein.
    Das ist der Form1-Designer
    Spoiler anzeigen

    VB.NET-Quellcode

    1. <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    2. Partial Class Form1
    3. Inherits System.Windows.Forms.Form
    4. 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
    5. <System.Diagnostics.DebuggerNonUserCode()> _
    6. Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    7. Try
    8. If disposing AndAlso components IsNot Nothing Then
    9. components.Dispose()
    10. End If
    11. Finally
    12. MyBase.Dispose(disposing)
    13. End Try
    14. End Sub
    15. 'Wird vom Windows Form-Designer benötigt.
    16. Private components As System.ComponentModel.IContainer
    17. 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
    18. 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
    19. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
    20. <System.Diagnostics.DebuggerStepThrough()> _
    21. Private Sub InitializeComponent()
    22. Me.panUser = New System.Windows.Forms.Panel()
    23. Me.Panel1 = New System.Windows.Forms.Panel()
    24. Me.Label1 = New System.Windows.Forms.Label()
    25. Me.Label2 = New System.Windows.Forms.Label()
    26. Me.Label3 = New System.Windows.Forms.Label()
    27. Me.Label4 = New System.Windows.Forms.Label()
    28. Me.Label5 = New System.Windows.Forms.Label()
    29. Me.Label6 = New System.Windows.Forms.Label()
    30. Me.Label7 = New System.Windows.Forms.Label()
    31. Me.Label8 = New System.Windows.Forms.Label()
    32. Me.Label9 = New System.Windows.Forms.Label()
    33. Me.Label10 = New System.Windows.Forms.Label()
    34. Me.panUser.SuspendLayout()
    35. Me.Panel1.SuspendLayout()
    36. Me.SuspendLayout()
    37. '
    38. 'panUser
    39. '
    40. Me.panUser.BackColor = System.Drawing.Color.White
    41. Me.panUser.Controls.Add(Me.Panel1)
    42. Me.panUser.Location = New System.Drawing.Point(18, 23)
    43. Me.panUser.Name = "panUser"
    44. Me.panUser.Size = New System.Drawing.Size(209, 237)
    45. Me.panUser.TabIndex = 0
    46. '
    47. 'Panel1
    48. '
    49. Me.Panel1.BackColor = System.Drawing.Color.Lime
    50. Me.Panel1.Controls.Add(Me.Label9)
    51. Me.Panel1.Controls.Add(Me.Label10)
    52. Me.Panel1.Controls.Add(Me.Label7)
    53. Me.Panel1.Controls.Add(Me.Label8)
    54. Me.Panel1.Controls.Add(Me.Label5)
    55. Me.Panel1.Controls.Add(Me.Label6)
    56. Me.Panel1.Controls.Add(Me.Label3)
    57. Me.Panel1.Controls.Add(Me.Label4)
    58. Me.Panel1.Controls.Add(Me.Label2)
    59. Me.Panel1.Controls.Add(Me.Label1)
    60. Me.Panel1.Location = New System.Drawing.Point(3, 3)
    61. Me.Panel1.Name = "Panel1"
    62. Me.Panel1.Size = New System.Drawing.Size(203, 536)
    63. Me.Panel1.TabIndex = 0
    64. '
    65. 'Label1
    66. '
    67. Me.Label1.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer))
    68. Me.Label1.Location = New System.Drawing.Point(12, 15)
    69. Me.Label1.Name = "Label1"
    70. Me.Label1.Size = New System.Drawing.Size(180, 31)
    71. Me.Label1.TabIndex = 0
    72. Me.Label1.Text = "Label1"
    73. Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
    74. '
    75. 'Label2
    76. '
    77. Me.Label2.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer))
    78. Me.Label2.Location = New System.Drawing.Point(12, 68)
    79. Me.Label2.Name = "Label2"
    80. Me.Label2.Size = New System.Drawing.Size(180, 31)
    81. Me.Label2.TabIndex = 1
    82. Me.Label2.Text = "Label2"
    83. Me.Label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
    84. '
    85. 'Label3
    86. '
    87. Me.Label3.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer))
    88. Me.Label3.Location = New System.Drawing.Point(12, 118)
    89. Me.Label3.Name = "Label3"
    90. Me.Label3.Size = New System.Drawing.Size(180, 31)
    91. Me.Label3.TabIndex = 3
    92. Me.Label3.Text = "Label3"
    93. Me.Label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
    94. '
    95. 'Label4
    96. '
    97. Me.Label4.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer))
    98. Me.Label4.Location = New System.Drawing.Point(12, 170)
    99. Me.Label4.Name = "Label4"
    100. Me.Label4.Size = New System.Drawing.Size(180, 31)
    101. Me.Label4.TabIndex = 2
    102. Me.Label4.Text = "Label4"
    103. Me.Label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
    104. '
    105. 'Label5
    106. '
    107. Me.Label5.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer))
    108. Me.Label5.Location = New System.Drawing.Point(12, 224)
    109. Me.Label5.Name = "Label5"
    110. Me.Label5.Size = New System.Drawing.Size(180, 31)
    111. Me.Label5.TabIndex = 5
    112. Me.Label5.Text = "Label5"
    113. Me.Label5.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
    114. '
    115. 'Label6
    116. '
    117. Me.Label6.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer))
    118. Me.Label6.Location = New System.Drawing.Point(12, 278)
    119. Me.Label6.Name = "Label6"
    120. Me.Label6.Size = New System.Drawing.Size(180, 31)
    121. Me.Label6.TabIndex = 4
    122. Me.Label6.Text = "Label6"
    123. Me.Label6.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
    124. '
    125. 'Label7
    126. '
    127. Me.Label7.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer))
    128. Me.Label7.Location = New System.Drawing.Point(12, 334)
    129. Me.Label7.Name = "Label7"
    130. Me.Label7.Size = New System.Drawing.Size(180, 31)
    131. Me.Label7.TabIndex = 7
    132. Me.Label7.Text = "Label7"
    133. Me.Label7.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
    134. '
    135. 'Label8
    136. '
    137. Me.Label8.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer))
    138. Me.Label8.Location = New System.Drawing.Point(12, 389)
    139. Me.Label8.Name = "Label8"
    140. Me.Label8.Size = New System.Drawing.Size(180, 31)
    141. Me.Label8.TabIndex = 6
    142. Me.Label8.Text = "Label8"
    143. Me.Label8.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
    144. '
    145. 'Label9
    146. '
    147. Me.Label9.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer))
    148. Me.Label9.Location = New System.Drawing.Point(12, 443)
    149. Me.Label9.Name = "Label9"
    150. Me.Label9.Size = New System.Drawing.Size(180, 31)
    151. Me.Label9.TabIndex = 9
    152. Me.Label9.Text = "Label9"
    153. Me.Label9.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
    154. '
    155. 'Label10
    156. '
    157. Me.Label10.BackColor = System.Drawing.Color.FromArgb(CType(CType(255, Byte), Integer), CType(CType(192, Byte), Integer), CType(CType(192, Byte), Integer))
    158. Me.Label10.Location = New System.Drawing.Point(12, 496)
    159. Me.Label10.Name = "Label10"
    160. Me.Label10.Size = New System.Drawing.Size(180, 31)
    161. Me.Label10.TabIndex = 8
    162. Me.Label10.Text = "Label10"
    163. Me.Label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
    164. '
    165. 'Form1
    166. '
    167. Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
    168. Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
    169. Me.ClientSize = New System.Drawing.Size(857, 611)
    170. Me.Controls.Add(Me.panUser)
    171. Me.Name = "Form1"
    172. Me.Text = "Form1"
    173. Me.panUser.ResumeLayout(False)
    174. Me.Panel1.ResumeLayout(False)
    175. Me.ResumeLayout(False)
    176. End Sub
    177. Friend WithEvents panUser As Panel
    178. Friend WithEvents Panel1 As Panel
    179. Friend WithEvents Label9 As Label
    180. Friend WithEvents Label10 As Label
    181. Friend WithEvents Label7 As Label
    182. Friend WithEvents Label8 As Label
    183. Friend WithEvents Label5 As Label
    184. Friend WithEvents Label6 As Label
    185. Friend WithEvents Label3 As Label
    186. Friend WithEvents Label4 As Label
    187. Friend WithEvents Label2 As Label
    188. Friend WithEvents Label1 As Label
    189. End Class


    Das ist der Code im Form1
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    3. Panel1.AutoScroll = True
    4. panUser.AutoScroll = True
    5. End Sub
    6. Private Sub ScrollUp(sender As Object, e As MouseEventArgs)
    7. Using c As New Control With {.Parent = Panel1, .Top = -1, .Height = 1}
    8. Panel1.ScrollControlIntoView(c)
    9. c.Parent = Nothing
    10. End Using
    11. End Sub
    12. Private Sub ScrollDown(sender As Object, e As MouseEventArgs)
    13. Using c As New Control With {.Parent = Panel1, .Top = Panel1.Height, .Height = 1}
    14. Panel1.ScrollControlIntoView(c)
    15. c.Parent = Nothing
    16. End Using
    17. End Sub
    18. Private Sub Panel1_MouseMove(sender As Object, e As MouseEventArgs) Handles Panel1.MouseMove
    19. If e.Y < Panel1.Height * 0.1 Then ScrollUp(sender, e)
    20. If e.Y > Panel1.Height * 0.9 Then ScrollDown(sender, e)
    21. End Sub
    22. End Class

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „tommy“ ()

    Hallo Leute!
    Ich habe mal eine Funktion geschrieben, vielleicht könnt ihr mal darauf schauen und eurer Feedback abgeben.
    würde mich sehr interessieren.
    Macht ein neues Projekt auf mit eine Form1 und eine Klasse mit dem Name MyMouseScroll.
    zu erst das Form1 Designer.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    2. Partial Class Form1
    3. Inherits System.Windows.Forms.Form
    4. 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
    5. <System.Diagnostics.DebuggerNonUserCode()> _
    6. Protected Overrides Sub Dispose(ByVal disposing As Boolean)
    7. Try
    8. If disposing AndAlso components IsNot Nothing Then
    9. components.Dispose()
    10. End If
    11. Finally
    12. MyBase.Dispose(disposing)
    13. End Try
    14. End Sub
    15. 'Wird vom Windows Form-Designer benötigt.
    16. Private components As System.ComponentModel.IContainer
    17. 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
    18. 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
    19. 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
    20. <System.Diagnostics.DebuggerStepThrough()> _
    21. Private Sub InitializeComponent()
    22. Me.Panel1 = New System.Windows.Forms.Panel()
    23. Me.Panel2 = New System.Windows.Forms.Panel()
    24. Me.Button6 = New System.Windows.Forms.Button()
    25. Me.Button4 = New System.Windows.Forms.Button()
    26. Me.Button7 = New System.Windows.Forms.Button()
    27. Me.Button1 = New System.Windows.Forms.Button()
    28. Me.Button5 = New System.Windows.Forms.Button()
    29. Me.Button3 = New System.Windows.Forms.Button()
    30. Me.Button2 = New System.Windows.Forms.Button()
    31. Me.cmdLoad = New System.Windows.Forms.Button()
    32. Me.cmdUnLoad = New System.Windows.Forms.Button()
    33. Me.Panel1.SuspendLayout()
    34. Me.Panel2.SuspendLayout()
    35. Me.SuspendLayout()
    36. '
    37. 'Panel1
    38. '
    39. Me.Panel1.Controls.Add(Me.Panel2)
    40. Me.Panel1.Location = New System.Drawing.Point(12, 41)
    41. Me.Panel1.Name = "Panel1"
    42. Me.Panel1.Size = New System.Drawing.Size(173, 206)
    43. Me.Panel1.TabIndex = 3
    44. '
    45. 'Panel2
    46. '
    47. Me.Panel2.BackColor = System.Drawing.SystemColors.ActiveCaption
    48. Me.Panel2.Controls.Add(Me.Button6)
    49. Me.Panel2.Controls.Add(Me.Button4)
    50. Me.Panel2.Controls.Add(Me.Button7)
    51. Me.Panel2.Controls.Add(Me.Button1)
    52. Me.Panel2.Controls.Add(Me.Button5)
    53. Me.Panel2.Controls.Add(Me.Button3)
    54. Me.Panel2.Controls.Add(Me.Button2)
    55. Me.Panel2.Location = New System.Drawing.Point(0, 0)
    56. Me.Panel2.Name = "Panel2"
    57. Me.Panel2.Size = New System.Drawing.Size(244, 330)
    58. Me.Panel2.TabIndex = 2
    59. '
    60. 'Button6
    61. '
    62. Me.Button6.Location = New System.Drawing.Point(19, 240)
    63. Me.Button6.Name = "Button6"
    64. Me.Button6.Size = New System.Drawing.Size(180, 26)
    65. Me.Button6.TabIndex = 8
    66. Me.Button6.Text = "Button6"
    67. Me.Button6.UseVisualStyleBackColor = True
    68. '
    69. 'Button4
    70. '
    71. Me.Button4.Location = New System.Drawing.Point(19, 150)
    72. Me.Button4.Name = "Button4"
    73. Me.Button4.Size = New System.Drawing.Size(180, 26)
    74. Me.Button4.TabIndex = 7
    75. Me.Button4.Text = "Button4"
    76. Me.Button4.UseVisualStyleBackColor = True
    77. '
    78. 'Button7
    79. '
    80. Me.Button7.Location = New System.Drawing.Point(19, 283)
    81. Me.Button7.Name = "Button7"
    82. Me.Button7.Size = New System.Drawing.Size(180, 26)
    83. Me.Button7.TabIndex = 6
    84. Me.Button7.Text = "Button7"
    85. Me.Button7.UseVisualStyleBackColor = True
    86. '
    87. 'Button1
    88. '
    89. Me.Button1.Location = New System.Drawing.Point(19, 19)
    90. Me.Button1.Name = "Button1"
    91. Me.Button1.Size = New System.Drawing.Size(180, 26)
    92. Me.Button1.TabIndex = 2
    93. Me.Button1.Text = "Button1"
    94. Me.Button1.UseVisualStyleBackColor = True
    95. '
    96. 'Button5
    97. '
    98. Me.Button5.Location = New System.Drawing.Point(19, 196)
    99. Me.Button5.Name = "Button5"
    100. Me.Button5.Size = New System.Drawing.Size(180, 26)
    101. Me.Button5.TabIndex = 0
    102. Me.Button5.Text = "Button5"
    103. Me.Button5.UseVisualStyleBackColor = True
    104. '
    105. 'Button3
    106. '
    107. Me.Button3.Location = New System.Drawing.Point(19, 104)
    108. Me.Button3.Name = "Button3"
    109. Me.Button3.Size = New System.Drawing.Size(180, 26)
    110. Me.Button3.TabIndex = 4
    111. Me.Button3.Text = "Button3"
    112. Me.Button3.UseVisualStyleBackColor = True
    113. '
    114. 'Button2
    115. '
    116. Me.Button2.Location = New System.Drawing.Point(19, 61)
    117. Me.Button2.Name = "Button2"
    118. Me.Button2.Size = New System.Drawing.Size(180, 26)
    119. Me.Button2.TabIndex = 3
    120. Me.Button2.Text = "Button2"
    121. Me.Button2.UseVisualStyleBackColor = True
    122. '
    123. 'cmdLoad
    124. '
    125. Me.cmdLoad.Location = New System.Drawing.Point(12, 12)
    126. Me.cmdLoad.Name = "cmdLoad"
    127. Me.cmdLoad.Size = New System.Drawing.Size(75, 23)
    128. Me.cmdLoad.TabIndex = 4
    129. Me.cmdLoad.Text = "Load"
    130. Me.cmdLoad.UseVisualStyleBackColor = True
    131. '
    132. 'cmdUnLoad
    133. '
    134. Me.cmdUnLoad.Location = New System.Drawing.Point(110, 12)
    135. Me.cmdUnLoad.Name = "cmdUnLoad"
    136. Me.cmdUnLoad.Size = New System.Drawing.Size(75, 23)
    137. Me.cmdUnLoad.TabIndex = 5
    138. Me.cmdUnLoad.Text = "Unload"
    139. Me.cmdUnLoad.UseVisualStyleBackColor = True
    140. '
    141. 'Form1
    142. '
    143. Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
    144. Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
    145. Me.ClientSize = New System.Drawing.Size(247, 294)
    146. Me.Controls.Add(Me.cmdUnLoad)
    147. Me.Controls.Add(Me.cmdLoad)
    148. Me.Controls.Add(Me.Panel1)
    149. Me.Name = "Form1"
    150. Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
    151. Me.Text = "Form1"
    152. Me.Panel1.ResumeLayout(False)
    153. Me.Panel2.ResumeLayout(False)
    154. Me.ResumeLayout(False)
    155. End Sub
    156. Friend WithEvents cmdLoad As Button
    157. Friend WithEvents Panel1 As Panel
    158. Friend WithEvents Panel2 As Panel
    159. Friend WithEvents cmdUnLoad As Button
    160. Friend WithEvents Button7 As Button
    161. Friend WithEvents Button1 As Button
    162. Friend WithEvents Button3 As Button
    163. Friend WithEvents Button5 As Button
    164. Friend WithEvents Button2 As Button
    165. Friend WithEvents Button4 As Button
    166. Friend WithEvents Button6 As Button
    167. End Class


    Als nächste Form1 Code
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private AutoSlider As New MyMouseScroll
    3. Private Sub Button4_Click(sender As Object, e As EventArgs) Handles cmdLoad.Click
    4. AutoSlider.Load(Panel1, Panel2)
    5. End Sub
    6. Private Sub Button6_Click(sender As Object, e As EventArgs) Handles cmdUnLoad.Click
    7. AutoSlider.UnLoad()
    8. End Sub
    9. End Class


    und als letzter die Klasse
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class MyMouseScroll
    2. Dim varParent As Control
    3. Dim varChild As Control
    4. Private m_ctrRootContainers() As Control
    5. Dim Timer As Timer
    6. Dim KlickControl As Control
    7. Public Sub Load(Parent As Object, Child As Object)
    8. If (TypeOf Parent Is Panel Or TypeOf Parent Is GroupBox Or
    9. TypeOf Parent Is SplitContainer Or TypeOf Parent Is TabControl Or
    10. TypeOf Parent Is TableLayoutPanel Or TypeOf Parent Is FlowLayoutPanel) = True Then
    11. varParent = CType(Parent, Control)
    12. Else
    13. Throw New Exception("Diese Steuerelement " & Parent.ToString & " ist kein Container!")
    14. Exit Sub
    15. End If
    16. If (TypeOf Child Is Panel Or TypeOf Child Is GroupBox Or
    17. TypeOf Child Is SplitContainer Or TypeOf Child Is TabControl Or
    18. TypeOf Child Is TableLayoutPanel Or TypeOf Child Is FlowLayoutPanel) = True Then
    19. varChild = CType(Child, Control)
    20. Else
    21. Throw New Exception("Diese Steuerelement " & Child.ToString & " ist kein Container!")
    22. Exit Sub
    23. End If
    24. Dim ctr As Control
    25. For Each ctr In varChild.Controls
    26. AddHandler ctr.MouseDown, AddressOf Control_MouseDown
    27. AddHandler ctr.MouseUp, AddressOf Control_MouseUp
    28. Next ctr
    29. Timer = New Timer()
    30. Timer.Interval = 100
    31. Timer.Enabled = False
    32. AddHandler Timer.Tick, AddressOf Timer_tick
    33. End Sub
    34. Private Sub Control_MouseDown(sender As Object, e As MouseEventArgs)
    35. Timer.Enabled = True
    36. KlickControl = CType(sender, Control)
    37. End Sub
    38. Private Sub Control_MouseUp(sender As Object, e As MouseEventArgs)
    39. Timer.Enabled = False
    40. KlickControl = Nothing
    41. End Sub
    42. Private Sub Timer_tick(sender As Object, e As EventArgs)
    43. If IsNothing(KlickControl) Then Timer.Enabled = False
    44. Dim Point As Point = varParent.PointToClient(Control.MousePosition)
    45. If Point.Y > (varParent.Height - 50) Then
    46. If (varChild.Height - varParent.Height) > varChild.Top Then
    47. If ((varChild.Height - varParent.Height) * -1) > varChild.Top - 5 Then
    48. varChild.Top = -(varChild.Height - varParent.Height)
    49. Else
    50. varChild.Top -= 5
    51. End If
    52. End If
    53. End If
    54. If Point.Y < 50 Then
    55. If varChild.Top < 0 Then
    56. If varChild.Top + 5 > 0 Then
    57. varChild.Top = 0
    58. Else
    59. varChild.Top += 5
    60. End If
    61. End If
    62. End If
    63. If Point.X > (varParent.Width - 50) Then
    64. If (varChild.Width - varParent.Width) > varChild.Left Then
    65. If ((varChild.Width - varParent.Width) * -1) > varChild.Left - 5 Then
    66. varChild.Left = -(varChild.Width - varParent.Width)
    67. Else
    68. varChild.Left -= 5
    69. End If
    70. End If
    71. End If
    72. If Point.X < 50 Then
    73. If varChild.Left < 0 Then
    74. If varChild.Left + 5 > 0 Then
    75. varChild.Left = 0
    76. Else
    77. varChild.Left += 5
    78. End If
    79. End If
    80. End If
    81. Application.DoEvents()
    82. End Sub
    83. Public Sub UnLoad()
    84. Dim ctr As Control
    85. For Each ctr In varChild.Controls
    86. RemoveHandler ctr.MouseDown, AddressOf Control_MouseDown
    87. RemoveHandler ctr.MouseUp, AddressOf Control_MouseUp
    88. Next ctr
    89. End Sub
    90. End Class


    Fertig.
    zum Schluss Kompilieren und starten, sobald die Linke Maus gehalten wird, und mit der Maus herum fährt, seht ihr wie es Scrollt.

    Mfg tommy

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

    tommy schrieb:

    Fertig.
    zum Schluss Kompilieren
    und wundern, weil Dein Code unter Option Strict On nicht compiliert.
    Visual Studio – Empfohlene Einstellungen
    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!
    Hallo RodFromGermany!
    Sorry habe wohl vergessen unter My Projekt \ Kompilieren den Option Strict On etc. zu Aktivieren.
    Ich habe den vorherige Eintrag ausgebessert.
    Aber was ich wissen wollte, was sagt ihr zu den Code, ist der gut oder nicht?
    Ich persönlich nein, wegen dem Timer .
    Der Code funktioniert, aber ich denke der Code besser sein ohne Timer oder was sagt ihr?
    @tommy Das ist eine Definitionsfrage (Scrollen, Verschieben).
    Probier mal, das mit MouseScroll zu machen, da brauchst Du keinen Timer, hast aber keine y-Bewegung.
    learn.microsoft.com/de-de/dotn…l?view=windowsdesktop-6.0
    Allerdings kannst Du dem Panel selbst 2 ScrollBars geben und auf denen das MouseScroll auswereten.
    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!
    Das Problem mit MouseScroll ist, wenn ich etwas markiere und verschieben möchte funktioniert das nicht.
    Den ich habe ein Usercontroll darin habe ich ein Panel und im Panel mehrere PictureBox.
    Wenn ich das obere PictureBox mit der linken Maustaste klicke und halte, und währenddessen mit dem Mauszeiger nach unten gehe, so das ich bei UserControll unten angekommen bin, aber der Panel Länger als Usercontroll ist, wird der Panel nicht nach oben geschoben.
    Warum ? weil ich die Bilder Reihung verändern möchte.
    Wenn ich aber mit der Maus auf dem SchrollBar klicke und drauf und runter schiebe, Verschiebt sich der Panel nach oben oder nach unten.
    Ich hoffe du verstehst was ich jetzt meine?
    @tommy Klar.
    Noch ein Vorschlag:
    Mausklick in das Panel, nicht auf Button & Co, und dann bewegen, wie man eine Form an der Titelzeile bewegt.
    Das geht sehr einfach und ist im Forum gut beschrieben.
    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!