2012-01-15 60 views
8

如何生成新窗體Form2Form1,但確保Form2鄰近Form1,例如:顯示與C#產生的相鄰的另一個窗體#

enter image description here

+3

表單具有['Location'屬性](http://msdn.microsoft.com/en-us/library/ms159414.aspx)。這有幫助嗎? – 2012-01-15 16:23:38

+0

@Cody Grey是的,謝謝 – Mike 2012-01-15 17:15:14

回答

4

嘗試處理主窗體的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); 
    } 
} 
6

是這樣的:

// 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座標保持不變。

+0

謝謝,但我認爲窗口不會「粘在」其他窗口/窗體? – Mike 2012-01-15 17:07:55

+0

不用粘貼 – 2012-01-15 17:59:29

+1

@Mike:你沒有指定這個要求。 – Tudor 2012-01-15 19:12:55

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

在同級車。

+0

如果Form2被移動' – Groo 2012-01-15 18:12:30

+0

@Groo謝謝。據此編輯。 – ispiro 2012-01-15 18:33:14

3

也許這會幫助你。 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(); 
     } 
相關問題