記録として残しておきたいブログ

主にプログラミングについて書きます。現在は http://tmg0525.hatenadiary.jp/ に書いています。

c# 常にフォームの横にフォームを表示する

たぶん、親フォームの位置と大きさを取得してそこから子フォームの表示する位置を設定すればいけるんじゃないかと考えた。

 

親フォームの位置と大きさを取得する

フォームのLeftプロパティとTopプロパティで位置を取得できる

フォームのHeightプロパティとWidthプロパティで大きさを取得できる

 

子フォームを親フォームの横に表示する

①子フォーム.Left = 親フォーム.Left + 親フォーム.Width

②子フォーム.Top = 親フォーム.Top

フォームの高さも同じにしてみる

③子フォーム.Height = 親フォーム.Height

 

タイマーで①、②、③の処理をやれば常に親フォームの横に子フォームが表示されるようになる!

 

※気になったところ

子フォームを動かそうとしても動かない。

親フォームの位置に合わせてるからそうなるんだろうけど...

f:id:tmg1998:20160208015553p:plain

 

 

メモ:C#でフォームからほかのクラスからコントロールの参照を渡す - 記録として残しておきたいブログ

前の記事も参考にしてみます

 

Form1(親フォーム)、Form2(子フォーム)とする

Form2にはtimer1(タイマー)が置かれている

 

// Form1.cs
Form2 f2 = new Form2();

f2.f = this;

 

// Form2.cs
public Form1 f;

private void Form2_Load(object sender, EventArgs e)
{

this.Left = f.Left + f.Width;
this.Top = f.Top;
this.Height = f.Height;

timer1.Enabled = true;
timer1.Interval = 60;
timer1.Tick += new System.EventHandler(this.timer1_Tick);
}

private void timer1_Tick(obhect sender, EventArgs e)
{

this.Left = f.Left + f.Width;
this.Top = f.Top;
this.Height = f.Height;
}