c# 常にフォームの横にフォームを表示する
たぶん、親フォームの位置と大きさを取得してそこから子フォームの表示する位置を設定すればいけるんじゃないかと考えた。
親フォームの位置と大きさを取得する
フォームのLeftプロパティとTopプロパティで位置を取得できる
フォームのHeightプロパティとWidthプロパティで大きさを取得できる
子フォームを親フォームの横に表示する
①子フォーム.Left = 親フォーム.Left + 親フォーム.Width
②子フォーム.Top = 親フォーム.Top
フォームの高さも同じにしてみる
③子フォーム.Height = 親フォーム.Height
タイマーで①、②、③の処理をやれば常に親フォームの横に子フォームが表示されるようになる!
※気になったところ
子フォームを動かそうとしても動かない。
親フォームの位置に合わせてるからそうなるんだろうけど...
メモ: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;
}