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, 47 mal angesehen
    Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen. :huh:
    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“ ()

    so etwas mit einzelnen labeln umzusetzen, stelle ich mir sehr, sehr schmerzhaft vor.

    Schonmal an ein Listiew oder besser noch ObjectListview gedacht? Mit letzterem geht wirklich sehr viel im Bezug auf es nicht wie eine Tabelle aussehen lassen..

    objectlistview.sourceforge.net/cs/index.html