C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 49 を表示中)
■26691 / )  Re[1]: VisualStudioのオプションのようなダイアログを作成
□投稿者/ たくボン (54回)-(2008/10/17(Fri) 14:19:40)
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も継承
して実装しています。


返信 編集キー/


管理者用

- Child Tree -