打开第二个表格,右下一个表格

问题描述:

我正在使用winforms。打开第二个表格,右下一个表格

我创建了一个即将完成的应用程序。考虑以下几点:我有两种形式,第一种形式从应用程序启动开始,第二种形式需要在第一种形式旁边打开。

实施例:

Form collision

我怎样才能在第二形式访问所述第一形式的位置?我应该将“this”发送给第二个表单的构造函数吗?

编辑

下面的代码帮了我:

private void changelogToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    if (_changelog.IsDisposed) 
    { 
      _changelog = new Changelog(); 
    } 
      _changelog.Location = new Point((Left + Width), Top); 
      _changelog.Show(); 
} 

一个基本原则要牢记一个设计的构造方法时:永不放弃的构造任何不必要的信息。

所以,你需要的不是其他窗口,而是它的位置。 更好的是,您需要新窗口应该位于的位置。

这意味着,你不应该让第二种形式了解的第一种形式,而不是它的构造应该采取两种:

  1. 一个参数Point location
  2. 两个参数int x, int y

根据在你的优先。 你当然可以(应该)有两个构造函数,所以你可以决定是否给Point locationint x, int y

这一切都说,忘了你读什么。

SecondForm form = new SecondForm() 
{ 
    Location = new Point(this.Right, this.Top) 
}; 

这只是一个说法的另一种方式:

SecondForm form = new SecondForm(); 
form.Location = new Point(this.Right, this.Top); 
+0

会接受你的答案时,我允许这样做,因为你的回答解决了这一问题 – Max 2013-05-03 11:58:41

+0

@Mobstaa很乐意帮忙, 感谢你的接纳 :) – 2013-05-03 12:20:34

为什么不要把 比使用构造要好,我只想手动创建第二个窗体时设置属性新的形式,当你打开它?

Form2 f = Form2(); 
f.Location = new Point(this.Left + this.Width, this.Top); 
f.Show(); // Or ShowDialog() 

当然,这需要第二表单属性StartPosition设置为FormStartPosition.Manual