VB.Net Buttons/ Textboxen/ etc. dynamisch anordnen

Hallo und schonmal danke für Eure Hilfe,

ich will ein Programm schreiben, das die einzelnen Elemente and die Größe des Forms anpasst (Anordnung).

Gibt es da irgendetwas automatisches oder muss ich jedes Element einzeln anpassen (ausprogrammieren).

Danke!

Mfg Philipp

Hallo,

Wenn ich dich richtig verstanden habe, willst du beispielsweise bei mehreren Buttons ihre Position in Abhängigkeit der Größe des Forms ändern, ohne dies für jeden Einzelnen zu tun???

Wie wäre es dann mit einem Array?

Beispiel:

Public Class Form1
 Public Buttons(7) As System.Windows.Forms.Button
 Private Sub Form1\_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 For i As Integer = 0 To 7
 Buttons(i) = New System.Windows.Forms.Button()
 Buttons(i).Location = New System.Drawing.Point(81 \* i + Me.Width / 4, 12)
 Buttons(i).Text = "Button " & i + 1
 Me.Controls.Add(Buttons(i))
 Next
 End Sub
End Class

Möglich (und vielleicht auch praktischer) wäre natürlich auch eine For-Each-Schleife, mit der dies genauso geht.

Ich hoffe dir geholfen zu haben.

Gruß,
Computerfreakpg

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Das ist schon ein guter Ansatz, danke!

Ich will aber nicht nur wenn ich das Formular starte auf die Größe reagieren, sondern auch zur Laufzeit, wenn das Form in der Größe verändert wird.

Ich will aber nicht nur wenn ich das Formular starte auf die
Größe reagieren, sondern auch zur Laufzeit, wenn das Form in
der Größe verändert wird.

Hallo Philipp,

dann musst Du für das übergeordnete Control einen Handler für das SizeChanged-Event schreiben.

Oder aber: experimentiere mit Panels und der Property „Dock“. Damit lässt sich viel automatisieren, ohne Zeile Code schreiben zu müssen.

Gruß
Thomas

Das ist schon ein guter Ansatz, danke!

Ich will aber nicht nur wenn ich das Formular starte auf die
Größe reagieren, sondern auch zur Laufzeit, wenn das Form in
der Größe verändert wird.

Hallo,

Das geht mit dem Event Form1.SizeChanged:

Public Class Form1
 Public Buttons(7) As System.Windows.Forms.Button

 Private Sub Form1\_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
 For i As Integer = 0 To 7
 Buttons(i) = New System.Windows.Forms.Button()
 Buttons(i).Location = New System.Drawing.Point(81 \* i + Me.Width / 4, 12)
 Buttons(i).Text = "Button " & i + 1
 Me.Controls.Add(Buttons(i))
 Next
 End Sub
 Private Sub Form1\_SizeChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.SizeChanged
 For i As Integer = 0 To 7
 Buttons(i).Location = New System.Drawing.Point(81 \* i + Me.Width / 4, 12)
 Buttons(i).Text = "Button " & i + 1
 Next
 End Sub
End Class

Gruß,
Computerfreakpg

So, hab jetzt mal ein TableLayoutPanel genommen und das ans Form angedockt, und in jedem einzelnen Fenster dieses TableLayoutPanels habe ich nochmals TableLayoutPanels, wleche ich auch andocke, da hau ich dann die controls rein und doch sie auch an, das klappt ganz gut.

Dockeigenschaft die ich verwende ist „Fill“.