Control mit festem Randabstand zum übergeordneten Container

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

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Control mit festem Randabstand zum übergeordneten Container

    Hallo,

    ich habe ein Control in einem Panel mit Dock = Bottom, wodurch die Ränder unten, links und rechts des Controls den Rändern des Containers anhaften.
    Oben brauche ich immer einen fixen Abstand zum Rand des Containers. Eigentlich dachte ich mit Anchor = Top wäre das drin aber, Anchor und Dock scheinen sich gegenseitig aufzuheben

    Jetzt war meine zweite Idee:

    VB.NET-Quellcode

    1. Private Sub Form1_ResizeEnd(sender As Object, e As EventArgs) Handles Me.ResizeEnd
    2. dgv.Top = Panel1.Top - 100
    3. End Sub

    Leider misslingt das auch.

    Viele Grüße
    Dafür gibt es einen SplitContainer. Der besteht aus zwei Teilen, die durch einen Splitter in ihrer Größe wechselseitig geändert werden können. Da kannst Du einstellen, dass IsSplitterFixed True ist, wodurch der User die Größe eben nicht mehr ändern kann. Und dann noch einstellen, dass das Panel1 immer gleiche Größe hat (FixedPanel) und natürlich die Orientation auf Vertical stellen. Bild 1: Form mit SplitContainer und Eigenschaften, Bild 2 Form nach Größenänderung. Der Button im unteren Panel wird größer, das obere Panel bleibt wie es ist. Der Abstand von Button zu oben ist also gleich geblieben.
    Bilder
    • Bild1.png

      40,23 kB, 628×696, 40 mal angesehen
    • Bild2.png

      6,01 kB, 219×550, 45 mal angesehen
    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.
    Das geht auch mit einem TableLayoutPanel mit beliebigen Zeilen und Spalten, dessen Zeilen und Spalten fix oder variabel hoch bzw. breit sind.
    Sollen in eine Zelle mehrere Controls rein, musst Du da zunächst ein normales Panel reinpacken.
    Da kann man auch Zeilen und Spalten verbinden (ColumnSpan, RowSpan), so dass zusammengesetzte Zellen entstehen.
    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!