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();
  }
}