はじめに
とあるアプリを作ろうと思って困ったので、メモ。
ポイントはこんなんかなぁ…。
- SplitContainerに表示するFormをインスタンス化する
- インスタンス化したFormのTopLevelってプロパティをfalseに変更する
- SplitContainerのPanelのControlsコレクションでAddメソッドを使ってFormを追加する
※今回はフォームがロードされたときのコールバックで表示することにする - FormのShowメソッドで表示する
準備と実装
フォームを作成する
まずはメインにするフォーム(名前はMainFormにしとく)はこんな感じ。
フォームにSplitContainer(名前はMainSplitContainerにしとく)を追加する。
実行したときに区別がつくようにSplitContainerのPanel1とPanel2の背景色は変えといた。
んで、SplitContainerに配置するフォーム(名前はSubFormにしとく)はこんな感じ。
これも区別がつくようにLabelを追加しといた。
SplitContainerのプロパティのうち、FromBorderStyleってプロパティをNoneに変更する
コードを書く
んで、コード。
今回はMainFormでフォームがロードされたとき(Loadイベント)にSubFormを表示することにする。
あと、SubFormはPanel2に表示することに。
Loadイベントのコードはこんな感じ。
private void MainForm_Load(object objSender, EventArgs objEventArguments)
{
try
{
// SplitContainerのPanelに表示するフォームをインスタンス化する
SubForm objSubForm = new SubForm();
// フォームのTopLevelってプロパティをfalseにする
objSubForm.TopLevel = false;
// フォームをSplitContainerに追加する
MainSplitContainer.Panel2.Controls.Add(objSubForm);
// フォームを表示する
objSubForm.Show();
}
catch (Exception exception)
{
// 例外が起きたときはコンソールに例外のメッセージを表示する
System.Console.WriteLine(exception.Message);
}
finally
{
// 今回は何もしない
;
}
}
実行
実行すると、こんな感じ。
おわりに
あとは見た目をうまいことすれば使えるようになるかな…。
んま、メモってことで。



