デフォルトの状態ではWindowの大きさは自由に変更することができます。
このために、画面のレイアウトがくずれてしまうことがあります。
意図したとおりのレイアウトをみてもらうためには、画面の大きさを固定してしまうという方法が考えられます。
-------------------------------------------------------
using System;
using System.Windows.Forms;
class HelloWorld : Form
{
private Button mybutton;
public static void Main()
{
Application.Run(new HelloWorld());
}
public HelloWorld()
{
this.mybutton = new Button();
this.SuspendLayout();
this.Text = "Hello World!";
// Formのサイズを固定
this.FormBorderStyle = FormBorderStyle.FixedSingle;
// 最大化ボタンの無効化
this.MaximizeBox = false;
this.mybutton.Location = new System.Drawing.Point(200, 200);
this.mybutton.Text = "閉じるよ";
this.mybutton.Click += new EventHandler(this.mb_Click);
this.Controls.Add(mybutton);
this.ResumeLayout(false);
}
private void mb_Click(object sender, EventArgs e)
{
this.Close();
}
}
-------------------------------------------------------
このように、Windowのサイズを変更できないようにして、最大化ボタンも効かないようにすれば、画面のレイアウトはくずれません。
別の方法として、コントロールの表示位置をWindowの枠から一定の位置に設定するという方法もあります。
-------------------------------------------------------
using System;
using System.Windows.Forms;
class HelloWorld : Form
{
// ボタンのインスタンスを格納する領域を確保する
private Button mybutton;
public static void Main()
{
Application.Run(new HelloWorld());
}
public HelloWorld()
{
this.mybutton = new Button();
this.SuspendLayout();
this.Text = "Hello World!";
// Windowの最小サイズの設定
this.MinimumSize = new System.Drawing.Size(120, 130);
this.mybutton.Location = new System.Drawing.Point(200, 200);
this.mybutton.Text = "閉じるよ";
this.mybutton.Click += new EventHandler(this.mb_Click);
this.Controls.Add(mybutton);
// ボタンの表示位置の固定(右枠と下枠からの距離の固定)
this.mybutton.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
this.ResumeLayout(false);
}
private void mb_Click(object sender, EventArgs e)
{
this.Close();
}
}
-------------------------------------------------------
この例では、ボタンは必ずWindowの右枠と下枠から一定の距離のところに表示されます。
Windowを小さくしていってもボタンが隠れることのないよう、Windowの最小サイズも指定しています。
あおい情報システム株式会社 小野修司(どっとねっとふぁん)