Forms untereinander platzieren mit .NET 1.1
Frank Dzaebel, erstellt am: 6.1.2006, zuletzt geändert: 6.1.2006
Kategorie:Windows Forms, .NET-Version:1.1
Was unter .NET 2.0 leicht mit dem TableLayoutPanel oder FlowLayoutPanel von der Hand geht, muss in .NET 1.1 noch teilweise mit eigenem Resizing-Code implementiert werden, trotz Anchor- und Dock-Eigenschaften.
Hier ein Beispiel mit prozentual gleicher Höhe und vertikal untereinander stehenden Formen.

private void Form1_Load(object sender,EventArgs e)
{
Formen forms = new Formen(this);
forms.Add(new Elemente()); //Form
forms.Add(new Eigenschaften()); //Form
}
class Formen
{
private ArrayList frms = new ArrayList();
private Form parent;
public Formen(Form parent)
{
this.parent = parent;
this.parent.Resize += new EventHandler(parent_Resize);
}
public void Add(Form form)
{
form.TopLevel = false;
form.Left = parent.ClientSize.Width - form.Width;
form.Height = parent.ClientSize.Height / (frms.Count + 1);
parent.Controls.Add(form); frms.Add(form);
form.Show(); parent_Resize(parent,EventArgs.Empty);
}
void parent_Resize(object sender,EventArgs e)
{
parent.SuspendLayout();
int height = parent.ClientSize.Height;
for (int i = 0; i < frms.Count; i++)
{
Form f = (Form)frms[i];
f.Top = i * height / frms.Count;
f.Height = height / frms.Count;
f.Left = parent.ClientSize.Width - f.Width;
}
parent.ResumeLayout();
}
}