Показать другую форму рядом с той, которая была порождена из C # - PullRequest
8 голосов
/ 15 января 2012

Как можно создать новую форму, например, Form2 из Form1, но убедитесь, что Form2 примыкает к Form1, например:

enter image description here

Ответы [ 4 ]

6 голосов
/ 15 января 2012

Что-то вроде:

// button click handler method

Form2 child = new Form2();
child.Location = new Point(this.Location.X + this.Width, 
                           this.location.Y);
child.Show();

Возьмите координату X местоположения текущего объекта формы и добавьте к нему ширину формы, получая, таким образом, координату X новой формы.Координата Y остается неизменной.

4 голосов
/ 15 января 2012

Попробуйте обработать событие LocationChanged главной формы.

Простая демонстрация:

public partial class Form1 : Form {
  Form2 f2;

  public Form1() {
    InitializeComponent();
    this.LocationChanged += new EventHandler(Form1_LocationChanged);
  }

  private void button1_Click(object sender, EventArgs e) {
    f2 = new Form2();
    f2.StartPosition = FormStartPosition.Manual;
    f2.Location = new Point(this.Right, this.Top);
    f2.Height = this.Height;
    f2.Show();
  }

  void Form1_LocationChanged(object sender, EventArgs e) {
    if (f2 != null)
      f2.Location = new Point(this.Right, this.Top);
  }
}
3 голосов
/ 15 января 2012

Может быть, это поможет вам. Button1 находится на форме1

private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();
            form2.StartPosition = FormStartPosition.Manual;
            form2.SetDesktopLocation(this.Location.X + this.Width, this.Location.Y);
            form2.ShowDialog();
        }
3 голосов
/ 15 января 2012
public partial class Form1 : Form
{
    Form2 frm2;
    public Form1()
    {
        InitializeComponent();
        frm2 = new Form2(this);
        frm2.Show();
    }
}

И:

public partial class Form2 : Form
{
    Form1 frm1;
    public Form2(Form1 frm1)
    {
        InitializeComponent();
        this.frm1 = frm1;
        frm1.Move += new EventHandler(Form1_Move);
    }

    void Form1_Move(object sender, EventArgs e)
    {
        this.Location = new Point(frm1.Location.X + frm1.Width, frm1.Location.Y);
    }
}

РЕДАКТИРОВАТЬ: (из-за комментария)

Чтобы сделать Form1 также Form2, добавьте:

Move += new EventHandler(Form2_Move);

К Form2 конструктору.

А:

void Form2_Move(object sender, EventArgs e)
{
    frm1.Location = new Point(Location.X - frm1.Width, Location.Y);
}

В своем классе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...