だらだらやるよ。

こげつのIT技術メモ

C#でアクセスのサブフォームっぽいことをする。

フォームの中でフォームの繰り返しを行う方法
最初は2行ずつのデータグリッドを作ろうかな、と思ったんですが
若干めんどくなりそうだったので、アクセスのサブフォーム風な感じにすることに:-)
フォームにパネルを貼り付けて、その中に別のフォームを繰り返して表示します。

繰り返されるフォームクラス(SubForm.cs)を作成
プロパティは

this.ControlBox = false;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
this.Text = "";

表示用のラベルを作成し、メインフォームから呼べるようにします。

public System.Windows.Forms.Label countLabel;

SabFormを繰り返すフォーム(MainForm.cs)を作成
サブフォームとして使用するパネルを作成

private System.Windows.Forms.Panel subFormPanel;


サブフォームを呼び出すメソッドはこんな感じです。

private void ReadSubForm(){
	int top = 0;
	for(int i = 0;i<10;i++){
		SubForm f = new SubForm();//サブフォームのインスタンスを作成
		f.TopLevel = false;//サブフォームのTopLevelがTrueのままだと、表示できないのでFalseにする
		this.subFormPanel.Controls.Add(f);//パネルにサブフォームを追加
		f.Top = top;//サブフォームの表示位置を設定
		f.countLabel.Text = i.ToString();//サブフォームで表示する値を設定
		f.Show();//フォームの表示
		top += f.Height;//次の表示位置を決定
	}
}

ループ中はパネルのVisibleをFalseにしておいたほうがいいかも