2012-01-15 2 views
8

どうすれば新しいフォームを生成できますか? Xは、現在のフォームオブジェクトの位置の座標とに追加しましょうC#から生成されたフォームに隣接する別のフォームを表示してください。

// button click handler method 

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

enter image description here

+3

フォームには[Locationプロパティ](http://msdn.microsoft.com/en-us/library/ms159414.aspx)があります。それは役に立ちますか? –

+0

@Cody Greyはい、ありがとうございます – Mike

答えて

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

のような何か:Form1からForm2が、必ずForm2を作るには、例えば、Form1に隣接していますそれはフォームの幅になり、新しいフォームのX座標が得られます。 Y座標は同じままです。

+0

ありがとうございますが、私はウィンドウが他のウィンドウ/フォームに「接着されたままになる」とは思いませんか? – Mike

+0

いいえ、接着されていません。 –

+1

@Mike:あなたはこの要件を指定しませんでした。 – Tudor

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

EDIT:(原因コメントへ)

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

+0

@Grooありがとうございます。それに応じて編集。 – ispiro

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(); 
     } 
関連する問題