|
■No26652 (麦 さん) に返信
> お世話になります。
> VisualStudio2005のツール→オプションのようなダイアログを作成したいと考えています。
1.まず、データの取得(LoadData)と保存(SaveData)のvirtualメソッドを持つUserControlを作成(仮にOptionPageとでも)。
2.OptionPage継承した各オプションページを作成。LoadData(), SaveData()をorverrideしておく。
3.TreeVirwのAfterSelect()にこんな感じで動的に実装。
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
// 現在のオプションページのデータを保存する
if (panel1.Controls.Count > 0 && panel1.Controls[0] is OptionPage)
{
((OptionPage)panel1.Controls[0]).SaveData();
}
panel1.Controls.Clear();
if (treeView1.SelectedNode.Text == "フォント")
{
panel1.Controls.Add(new OptionPageFont());
}
else if (treeView1.SelectedNode.Text == "ほげ")
{
panel1.Controls.Add(new OptionPageHoge());
}
// 新しく配置されたオプションページのデータ読み込み
if (panel1.Controls.Count > 0 && panel1.Controls[0] is OptionPage)
{
((OptionPage)panel1.Controls[0]).LoadData();
}
}
※ページが増えるとダラダラになるので、私はSimple Factoryにして生成の部分(LoadDataもSaveDataも
OptionPageの生成・破棄に関わる部分なので、Factory側で制御)を分離しています。
エクスプローラーのフォルダNodeように同じ属性を持つTreeNodeがたくさんある場合は、TreeNodeも継承
して実装しています。
|