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にしておいたほうがいいかも