Einfacher Separator

    • VB.NET

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

      Einfacher Separator

      Da ich für mein aktuelles Projekt einen Separator gebrauche dachte ich mir ich werfe ihn mal in die Runde.
      Vielleicht kann ihn ja wer gebrauchen.

      VB.NET-Quellcode

      1. Imports System.ComponentModel
      2. Public Class Separator
      3. Inherits Windows.Forms.Control
      4. Private _sepcolor As Color = Color.LightGray
      5. Private _sepheight As Int32 = 1
      6. <Description("Bestimmt die Farbe des Separators"), _
      7. Category("Appearance")>
      8. Public Property SeparatorColor As Color
      9. Get
      10. Return _sepcolor
      11. End Get
      12. Set(value As Color)
      13. _sepcolor = value
      14. End Set
      15. End Property
      16. <Description("Bestimmt die Höhe des Separators"), _
      17. Category("Appearance")>
      18. Public Property SeparatorHeight As Int32
      19. Get
      20. Return _sepheight
      21. End Get
      22. Set(value As Int32)
      23. _sepheight = value
      24. If value < 1 Then
      25. _sepheight = 1 'Eine ordentliche Exception kommt noch.
      26. End If
      27. End Set
      28. End Property
      29. Private Sub Separator_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
      30. If _sepheight > 1 Then
      31. Dim linerec As New Rectangle(10, Me.Height \ 2 - _sepheight \ 2, Me.Width - 20, _sepheight - 1)
      32. e.Graphics.FillRectangle(New SolidBrush(_sepcolor), linerec)
      33. e.Graphics.DrawRectangle(New Pen(_sepcolor), linerec)
      34. Else
      35. e.Graphics.DrawLine(New Pen(_sepcolor), 10, Me.Height \ 2, Me.Width - 10, Me.Height \ 2)
      36. End If
      37. End Sub
      38. End Class


      Vorschau, Bild1 Bild2


      LG.L

      Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von „Lawliet“ () aus folgendem Grund: Bezeichnung falsch ausgeschrieben

      Lawliet schrieb:

      Die Beschreibung der Propertys ist recht bedürftig, mir ist nichts anderes eingefallen.

      wozu da ühaupt was beschreiben? Wer für eine Property wie "SeparatorHeight As Int32" noch eine Beschreibung braucht, soll lieber Tennis spielen oder sowas.
      ich hätte höchstens die Voreinstellung auf 1 gesetzt statt 0.

      Und halt alle Kommentation weg - der Code ist selbsterklärend :thumbup:
      Danke sehr, habe es bearbeitet.
      Sieht wirklich besser aus wenn man als Startwert der Höhe eine 1 statt einer 0 setzt.
      Kommentation ist auch entfernt.

      LG.L
      @Lawliet: So wenig Selbstvertrauen? Aufgrund der ersten Antwort gleich mal paar Zeilen entfernen?
      Wenn du so eine Klasse schreibst, möchte man die auch in anderen Projekten benutzen. Die "Kommentation", die du entfernt hast, hilft anderen Usern, z.B. im Eigenschaften-Fenster zu erkennen, welcher Kategorie deine Eigenschaften angehören. Im Eigenschaften-Fenster kann es ja nicht schaden, wenn man sieht, was hier passiert.

      Auf die Gefahr hin, das EDR wieder einen seiner Links hierhersetzt: :P
      Recht hat er zwar: Im Normalfall ist guter Code selbsterklärend. Der Eigenschaft "KilometerProSekunde" muss man nicht als Kommentar beifügen: "Zeigt die Kilometer pro Sekunde an".
      Was du aber hier entfernt hast, hat mit dieser Art von Comments nicht zu tun.
      @der_Kurt
      Ich denke das hat sehr wenig mit Selbstvertrauen zu tun, ob da nun sowas steht wie "Bestimmt die Höhe des Separators" oder nicht macht nicht viel Unterschied zumal die Property mit der Bezeichnung "SeparatorHeight" deklariert ist. Genau das selbe bei SeparatorColor.
      Die Kommentare waren mir persönlich recht Egal, wer es unbedingt braucht kann sie ja selber kommentieren und bezeichnen.

      @ThuCommix
      Klingt merkwürdig, werde es ändern

      LG.L
      ups - ja, jetzt hasteja auch das CategoryAttribute und das DescriptionAttribute entfernt.
      Category-Attribute findich wichtig, falls man im FormDesigner die Eigenschaften nach Kategorien gruppiert hat.
      Description ist in diesem Falle aber imo so unnötig wies die Kommentation gewesen ist.
      @Lawliet: Mich hat's nur gewundert, dass schon nach dem ersten Kommentar plötzlich alles weg war. Es gibt doch Wichtigeres, als die Comments rauszunehmen. Wenn man ein UC erstellt, ist EIN Teil die Funktion des Controls, der ANDERE Teil ist die Wiederverwendbarkeit. Latürnich kannst du die Descriptions weglassen, aber... siehe Anhänge. BTW: war nich' bös gemeint.

      In Zeile 25 wär eine Exception anstatt der Messagebox toll. Da kann das Hauptprogramm darauf reagieren.
      Bilder
      • 1.JPG

        38,47 kB, 343×394, 197 mal angesehen
      • 2.JPG

        32 kB, 345×397, 140 mal angesehen
      @Lawliet:
      Ein sehr schönes Tool. Weiter so. :thumbup:
      Und wenn Du die Kommentare und Attribute wieder reinschreibst, kannst Du noch folgende Optimierungen vornehmen:
      CInt(Me.Height / 2) ==> Me.Height \ 2
      "\" ist Integerdivision, da must Du nicht mehr casten.
      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!
      @der_kurt
      Ich habs noch nicht so ganz mit dem Kommentieren von Funktionen,Subs oder Propertys, schreibe meist nur Klassen / Controls für mich selbst.
      Habe die Description und Category Attribute wieder hinzugefügt.
      Werde demnächst in Zeile 25 noch eine ordentliche Exception ausgeben lassen, jedoch wollte mich mich da erstmal was hineinlesen, habe damit noch nie gearbeitet.
      Solange lasse ich einfach die Messagebox weg, sollte man ja merken wenn der Wert nicht tiefer geht.

      @RodFromGermany
      Danke!, ein nützlicher Tipp, man lernt nie aus ;)

      LG.L

      Lawliet schrieb:

      Werde demnächst in Zeile 25 noch eine ordentliche Exception ausgeben lassen,
      Wozu?
      Mach es doch genau so wie bei einem NumericUpDowm, wenn Du einen Value kleiner als das Minimum vorgibst.
      Ich könnte mir vorstellen, dass es so eine InfoBox vorgefertigt gibt.
      Bilder
      • InfoBox.jpg

        13,74 kB, 300×242, 94 mal angesehen
      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!