Label, TabPanel oder UserControl? Layoutfrage

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

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Andy.

    Label, TabPanel oder UserControl? Layoutfrage

    Hallo

    Ich bräuchte mal Hilfe zu einem Projekt.
    Ich weiß nicht so recht wie ich da weitermachen soll. Auf dem Bild zu sehen, habe ich einmal alles mit Labels gesetzt und einmal mit dem TableLayoutPanel. Nutze das TableLayoutPanel zum ersten mal.

    Wenn ich das mit dem TableLayoutPanel erstelle, gibt das Unmengen an Code nur um die Daten anzuzeigen. Dazu kommt noch der Code für die Berechnungen und der Code zum ausdrucken.
    Die Anzeige ist hier aber "ansprechender" als mit einfachen Labels.

    Das mit den Labels scheint mir etwas zu "unübersichtlich" zu sein. Wäre aber vom Code her am wenigsten und vom Druck her am einfachsten?


    Nun kam mir noch die Idee eines eigenen "UserControls", wobei ich da aber nicht wüste wie ich das bauen soll, wie das aussehen könnte. ?(


    Gäbe es noch andere Möglichkeiten, der Darstellung und dann ausdrucken, an die ich nicht gedacht habe?


    Auzug des TableLayoutPanel Code
    Spoiler anzeigen

    VB.NET-Quellcode

    1. ' Füge Label für Header hinzu
    2. Dim textLabel0 As New Label() With {.Text = "Einheiten", .ForeColor = Color.Green, .AutoSize = True}
    3. TablePanelWohnen.Controls.Add(textLabel0, 0, TablePanelWohnen.RowCount)
    4. Dim minValueLabel As New Label() With {.Text = $"Min", .ForeColor = Color.Green, .AutoSize = True}
    5. TablePanelWohnen.Controls.Add(minValueLabel, 1, TablePanelWohnen.RowCount)
    6. Dim maxValueLabel As New Label() With {.Text = $"Max", .ForeColor = Color.Green, .AutoSize = True}
    7. TablePanelWohnen.Controls.Add(maxValueLabel, 2, TablePanelWohnen.RowCount)
    8. ' Erhöhe den RowCount für die nächste Gruppe von Labels
    9. TablePanelWohnen.RowCount += 1
    10. TablePanelWohnen.RowStyles.Add(New RowStyle(SizeType.Absolute, 22))
    11. ' Füge Label für Temperatur hinzu
    12. Dim textLabel As New Label() With {.Text = "Temperatur Morgens", .AutoSize = True}
    13. textLabel.Margin = New Padding(3)
    14. TablePanelWohnen.Controls.Add(textLabel, 0, TablePanelWohnen.RowCount)
    15. ' Setze den Wert für Min Temp Morgens
    16. Dim minTempValueLabel As New Label() With {.Text = $"{minTempWMo} °C", .AutoSize = True}
    17. minTempValueLabel.Margin = New Padding(3)
    18. TablePanelWohnen.Controls.Add(minTempValueLabel, 1, TablePanelWohnen.RowCount)
    19. minTempValueLabel.ForeColor = If(minTempWMo < 15.0, Color.Blue, minTempValueLabel.ForeColor)
    20. ' Setze den Wert für Max Temp Morgens
    21. Dim maxTempValueLabel As New Label() With {.Text = $"{maxTempWMo} °C", .AutoSize = True}
    22. maxTempValueLabel.Margin = New Padding(3)
    23. TablePanelWohnen.Controls.Add(maxTempValueLabel, 2, TablePanelWohnen.RowCount)
    24. maxTempValueLabel.ForeColor = If(maxTempWMo > 23.0, Color.Red, maxTempValueLabel.ForeColor)
    25. TablePanelWohnen.RowCount += 2

    Bilder
    • übersicht-2.jpg

      199,84 kB, 662×410, 87 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    Du könntest die daten als html rendern und dann in einem webcontrol ausgeben. Der Vorteil ist, dass du ganz einfach die html auch drucken kannst.
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    Wenn du das Drucken willst könntest du das ganze gleich in ein Bitmap o.ä. zeichnen.

    *Edit*
    Eventuell würde ja auch ein ReportViewer für dich infrage kommen.

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