[HOW TO] Eigene Buttonstatusanzeige mit Usercontrol & Prozentanzeige

    • VB.NET

    Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von F.A Development.

      [HOW TO] Eigene Buttonstatusanzeige mit Usercontrol & Prozentanzeige

      Guten Tag,
      Da ich schon desöfteren Media player ohne eine eigene Statusanzeige gesehen habe will ich euch nun erklären wie ihr es schafft mit einem Eigenen Usercontrol und die Prozentzahl wie lange dass lied schon läuft.
      Was braucht ihr?
      - Eine Klassenbiblothek
      - Ein Usercontrol
      - Ein Button auf dem Usercontrol

      Erstmal importiert ihr folgendes

      VB.NET-Quellcode

      1. Imports System.ComponentModel


      Dann müsst ihr euch im klaren sein, dies ist eher für User gedacht die noch nicht so viel erfahrung mit Vb hatten, deshalb ist dieses Tut sehr einfach gehalten und eigentlich auch gut erklärt. Imports ComponentModel erst damit können wir die Property eigenschaften richtig selber machen sonst kommen immer fehler Beispielsweise bei <Browsable>
      So erstmal müsst ihr euch ein Schönes Usercontrol basteln, in meinen Beispiel machen wir es mir einem
      Transparenten Hintergrund und einem Button. Wichtig hierbei ist dass ihr die Anchor von allen Objekten einstellt damit sich die Objekte richtig an die Ränder ranziehen beim Button zum Beispiel Top und Bottom dass heißt Oben Unten soll es sich ranziehen.
      So nun habt ihr einen kleinen Button hingelegt und tut erstmal in die Form Load vom Usercontrol folgenden Code:

      VB.NET-Quellcode

      1. RemoveHandler Button1.MouseMove, AddressOf Button1_MouseMove

      Dass soll bewirken dass wenn man über den Button fährt dass er sich nicht sofort bewegt, er soll sich erst bewegen wenn die Maus gedrückt ist mehr dazu gleich.
      Kommen wir nun zum Button1_MouseDown event, dieser Event wird aufgerufen wenn die Maus auf den Button gedrückt wird d.h Die Maustaste runtergedrückt wird.
      Dort tut ihr dann folgenden Code rein:

      VB.NET-Quellcode

      1. AddHandler Button1.MouseMove, AddressOf Button1_MouseMove 'Der AddHandler

      Ohne disen Code Funktioniert die ganze Statusanzeige nicht, dass ist dazu da das wenn der Button runtergedrückt wird man den Button verschieben kann wie man ihn jedoch verschiebt erkläre ich wiederrum gleich.
      Ins MouseMove erreignis vom Button kommt nun folgender Code:

      VB.NET-Quellcode

      1. Button1.Location = New Point(MousePosition.X, Button1.Location.Y)

      Dass ist dazu da damit der Button sich auf MausDown und bewegung bewegt.
      Der folgende Code ist jetzt auch ganz wichtig und kommt ins MouseUpereignis:

      VB.NET-Quellcode

      1. RemoveHandler Button1.MouseMove, AddressOf Button1_MouseMove

      Dieser Code ist dafür da dass das MouseMove ereignis nicht noch ausgeführt werden kann beim nächsten mal wenn man mit der Maus rüber fährt.
      Erstmal macht ihr jetzt noch oben unter Public Class

      VB.NET-Quellcode

      1. Dim value as String

      Jetzt kommen wir zum Eigentlichen Code, mit diesen Code machen wir dass man über eine Eigenschaft (bei uns Zeit) Die Position des Buttons auch bewegen kann damit immer der aktuelle Status angezeigt wird. Folgender Code erstmal in keine Sub Unter einer End Sub:

      VB.NET-Quellcode

      1. <Browsable(True), EditorBrowsable(EditorBrowsableState.Always)> _
      2. <DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)> _

      Dass sagt sowas aus wie dass die folgende Property im Eigenschaftsfenster auffindbar ist.
      Die Property sub die gleich darunter kommt:

      VB.NET-Quellcode

      1. Public Property Zeit() As String
      2. End Property

      Dass ist bis jetzt noch eine Leere Property Zeit
      Es kann dann später aufgerufen werden mit z.b
      Statusanzeige1.Zeit = 5%.
      Jetzt kommt der richtige code der da zwischen kommt:

      VB.NET-Quellcode

      1. Get
      2. Return value
      3. End Get
      4. Set(ByVal value As String)
      5. If value.Contains("%") Then
      6. Button1.Location = New Point(Me.Width / 100 * value.Replace("%", ""), Button1.Location.Y)
      7. Else
      8. Button1.Location = New Point(Me.Width / 100 * value, Button1.Location.Y)
      9. End If
      10. End Set

      Get und Return value besagt dass er die Value von value nehmen soll.
      Set(Byval value as String)
      value besagt dass was im Eigenschaftsfenster / Im Code von euch später angegeben wurden ist
      Button1.Location - New Point ist alles dass Die Position verändert werden kann.
      Die if abfrage prüft ob ein % drin ist muss aber auch nicht!
      100 / Me.Width * value etc. sagt aus dass 1 % = 1% ist der Button weiter nachvorne geggangen aber die Y Koordinaten bleiben gleich.
      End Set ist die beendung ähnlich wie End Sub Aber es gibt ja nochmal extra die End Property.
      Jetzt müsst ihr Debuggen und gucken ob alles klappt (sollte wenn ihr es richtig gemacht habt)
      Und dann könnt ihr es speichern.
      Ihr wählt in euer Windows Forms (euer Player)
      Extras -> ToolBoxelemnte auswählen
      Geht auf Durchsuchen und sucht im Projektordner die DLL.
      Dann ist sie in euer Toolbox und ihr könnt sie hinzufügen.
      Jetzt fragt ihr euch evt. wie könnt ihr überhaupt ausrechnen wie weit dass lied ist?
      Also Es gibt immer eine CurrentPosition und eine Duration
      Currentposition ist wo das lied gerade ist und Duration ist wieviel es isngesamt hat
      ihr müsstet es dann ca. so aufrufen:

      VB.NET-Quellcode

      1. Statusanzeige1.Zeit = 100 / Duration * CurrentPosition

      Dann sollte die Statusanzeige richtig laufen
      und dann müsst ihr je nach Player dass gleiche machen damit es auch veränderbar ist
      EuerPlayer.Currentposition = Statusanzeige.Zeit
      (beim Verändern)
      Hoffe mein Tutorial hat euch geholfen
      Falls fragen dort sind meldet euch ruhig
      Mfg
      Confix :P
      Achja bei mir sah es so am ende aus siehe Anhang.
      Wenn ihr aber wirklich einen Guten Media player machen wollt
      dann solltet ihr das schöner gestalten und evt. auch mit Grafiken (eine Picturebox die sich über die Form zieht) ähnlich wie beim Anadroxy player oder wie der heißt^^
      Bilder
      • Statusanzeige.jpeg

        1,31 kB, 491×19, 939 mal angesehen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Confix.npage.de“ ()

      wie kann man festlegen das der button nicht aus der form ziehbar ist? und warum hat meine bar über 10000 valu? und kann man i wie festlegen das eben auch wenn man scrolled die position des liedes folgt? ( so was we ein scroll event)

      Danke aber tut ist echt gut


      sie läuft aber wenn das lied fertig ist ist si enicht mal an einem 4tel angelangt, was muss man dann ändern`?

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „F.A Development“ ()

      Ersetzt mal dass:

      VB.NET-Quellcode

      1. Set(ByVal value As String)
      2. If value.Contains("%") Then
      3. Button1.Location = New Point(100 / Me.Width * value.Replace("%", ""), Button1.Location.Y)
      4. Else
      5. Button1.Location = New Point(100 / Me.Width * value, Button1.Location.Y)
      6. End If
      7. End Set

      Durch dass:

      VB.NET-Quellcode

      1. Set(ByVal value As String)
      2. If value.Contains("%") Then
      3. Button1.Location = New Point(Me.Width / 100 * value.Replace("%", ""), Button1.Location.Y)
      4. Else
      5. Button1.Location = New Point(Me.Width / 100 * value, Button1.Location.Y)
      6. End If
      7. End Set