TableLayoutPanel Controls haben Eigenschaften, die es nicht gibt

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

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Haudruferzappeltnoch.

    TableLayoutPanel Controls haben Eigenschaften, die es nicht gibt

    Hallo,

    das TableLayoutPanel macht mir zu schaffen. Ich habe keine Ahnung wie ich eine "Zelle" (Hat ja eigentlich gar keine Zellen) adressieren kann.
    Ich habe Controls in die Felder gezogen, und diese haben dann im Designer eine Cell-Eigenschaft (1,0) steht da z.B. drin; im Code heißt es aber Cell ist kein Member.
    Sonst hätte ich damit ein bestimmtes Control suchen können.

    Also angenommen ich mach ein TLP mit drei Buttons und möchte zur Laufzeit den Button in der Mitte umfärben. Wie identifiziere ich den?

    Ich hab da noch eine Funktion .GetCellPosition gefunden, und damit was hingekriegt, sieht aber anständig unanständig aus:

    VB.NET-Quellcode

    1. Dim buttonColor = TLP.Controls.OfType(Of Button).First(Function(b) TLP.GetCellPosition(b).Column = 1 AndAlso TLP.GetCellPosition(b).Row = 0)
    2. buttonColor.BackColor = Color.Red


    Viele Grüße

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Haudruferzappeltnoch“ ()

    Haudruferzappeltnoch schrieb:

    Wie identifiziere ich den?
    mit Button2.BackColor = Color.Red
    Anders herum funktioniert das gut, die Zeile und die Spalte eines Controls zu ermitteln.
    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!

    VB.NET-Quellcode

    1. Dim CellControl = TableLayoutPanel1.GetControlFromPosition(0, 1)

    Das Control weiß nicht, wo es sich im TLP befindet. Das weiß nur das TLP, auch wenn es im Designer als Eigenschaft der Controls angezeigt wird. Das ist wie bei einem ToolTip. Auch wenn einem Control solch einer im Designer zugewiesen kann, kennt in Wirklichkeit nur dsa ToolTip-Control jenen Text.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Zeilenzahl ändern, RowStyle hinzufügen und modifizieren:

    VB.NET-Quellcode

    1. TableLayoutPanel1.RowCount += 1
    2. TableLayoutPanel1.RowStyles.Add(New RowStyle With {.SizeType = SizeType.Percent}) 'prozentual ohne Höhen-/Prozentangabe
    3. For i = 0 To TableLayoutPanel1.RowStyles.Count - 1
    4. TableLayoutPanel1.RowStyles(i).SizeType = SizeType.Percent
    5. TableLayoutPanel1.RowStyles(i).Height = CSng(100 / TableLayoutPanel1.RowStyles.Count) 'alle zeilen gleichmäßig in der prozentualen Höhe festlegen
    6. Next
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.