Unterteilungen wie bei der Übersicht des Systems

  • VB.NET

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

    Unterteilungen wie bei der Übersicht des Systems

    Hi ihr,

    habe eine Frage.. guckt ihr screen im Anhang. ;)

    Wie bekomm ich diese Linie nach dem String hin?

    Also diese hier:

    Windows editon-------------------------
    text
    text
    text

    System---------------------------------
    text
    text
    text
    Mit der Suche habe ich leider nichts gefunden.

    Gruß
    360
    Bilder
    • vb_paradise_system.png

      152,4 kB, 1.223×733, 174 mal angesehen
    Genau. Das musst Du Dir selbst bauen.
    Male zuerst die Linie und schreibe danach den Text. Da hast Du weniger Huddeleien mit der Startposition der Linie.
    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!
    Alternativ kannst du auch 2 Label nehmen. Das erste beinhaltet deinen Text und steht auf AutoSize. Im zweiten hast du die ForeColor auf Grau und als Text diese Striche (──────────────────). Beim Laden der Form musst du dann die Position des zweiten Label so setzen, dass es genau am ersten Label anschliesst

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Ok, ich habs mal so probiert:

    VB.NET-Quellcode

    1. Imports System.Drawing
    2. Public Class Form1
    3. Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
    4. 'Neuer Strich'
    5. zeichnen()
    6. 'Neues Label'
    7. Dim Label1 As New Label
    8. Label1.Text = "Test"
    9. Label1.Location = New Point(0, 50)
    10. Me.Controls.Add(Label1)
    11. End Sub
    12. Private Sub zeichnen()
    13. Dim graphic As Graphics
    14. Dim p As Pen
    15. graphic = Me.CreateGraphics()
    16. p = New Pen(System.Drawing.Color.Black, 1)
    17. graphic.DrawLine(p, 0, 50, Me.Width, 50)
    18. End Sub
    19. End Class


    Aber leider funktioniert das nicht, sobald ich des neue Label erzeuge ist die Linie weg.. übrigens egal ob ich erst die Linie und dann das Label oder erst das Label und dann die Linie erzeuge - der Effekt ist der selbe. 8|

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

    Sub Zeichnen() Handles MyBase.Paint
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!
    Das kann nicht funktionieren.
    Zeichnen musst Du im Paint-Event, sonst ist der Strich sofort flöten.
    Probier mal dies:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private flag As Boolean = False
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. flag = True
    4. Invalidate()
    5. End Sub
    6. Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
    7. If flag Then
    8. e.Graphics.DrawLine(Pens.Black, 0, 50, Me.Width, 50)
    9. End If
    10. 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!
    du zeichnest falsch. Sowas macht man im Paint-Event und nutzt das von dort bereitgestellte Graphics-Objekt (e.graphics)

    Übrigens würde ich das ganz so lösen:

    VB.NET-Quellcode

    1. Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
    2. LabelStrich.Location=New Point(LabelText.Location.X + LabelText.Width, LabelText.Location.Y)
    3. End Sub


    Der ganze Rest (setzen der beiden Texte und AutoSize un ggf Align) kann im Designer gemacht werden

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Sooooo! :D

    Erstmal der Code zum Erfolg:

    VB.NET-Quellcode

    1. Imports System.Drawing
    2. Public Class Form1
    3. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    4. Dim Label1 As New Label
    5. Label1.Text = "Test"
    6. Label1.Font = New Font("Arial", 12)
    7. Label1.TextAlign = ContentAlignment.MiddleCenter
    8. Label1.AutoSize = True
    9. Label1.Location = New Point(0, 50 - Label1.Font.Height / 2)
    10. Me.Controls.Add(Label1)
    11. End Sub
    12. Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
    13. e.Graphics.DrawLine(Pens.Black, 0, 50, Me.Width, 50)
    14. End Sub
    15. End Class


    = <screenshot>

    Genau so wie ichs haben wollte.. Ich denke der Code ist selbsterklärend.


    Mit diesen Strichen gehts natürlich auch, damit hab ich auch grad nochmal rum probiert.

    Einfach ein neues Label (Label2) erzeugt, die Höhe vom Label1 zugewiesen (Label2.Size = New Size(Label2.Widht, Label1.Height)), Align auf MiddleCenter und dann auf die selbe Stelle (0, 50) postiert. Allerdings werden die Striche in VB dann hochgestellt dargestellt, somit is das 'n bisschen schwierig die richtig auszurichten.

    Vielen Dank an euch!

    Gruß
    360
    Bilder
    • vb_paradise_test.png

      10,11 kB, 557×345, 130 mal angesehen
    Allerdings würde ich Label1 nicht in der Form_Load, sondern im Designer erzeugen.
    Das wäre in sich konsistent.
    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!