Skip to: Site menu | Main content

更新日:2011-07-07

WindowsApplication1.zip

  • 操作マニュアルUP!!(途中)
操作マニュアル.zip

ここでは、アプリ開発で作成してきた次のようなテーマのアプリを総合的
に管理するをテーマにアプリを開発する。
  • 食をテーマにおすすめのお店を管理するアプリ(食べラク)
  • 音楽をテーマにおすすめの曲を管理するアプリ(聞くラク)
  • 図書をテーマにおすすめの本を管理するアプリ(読むラク)
  • mixiをテーマにマイミクを管理するアプリ(ミクラク)

  • メイン画面
  • プロジェクト

大きくプロジェクトは[5構成]で行う。

  • MainApp    メインアプリ
※メインのアプリケーションを管理する。ツールアプリでフォームとユーザコントロール
を設定することで、メイン画面ではその組み合わせの画面を呼び出す。

  • ToolApp    ツールアプリ
※各フォームとユーザコントロールのレイアウトを変更できるツールアプリを管理する。
各フォームとユーザコントロールを組み合わせ情報を保存したりもこの画面で行うことが
できる。

  • CstmControls 派生コントロールクラスの集合
※ツールでコントロールのプロパティを

  • FormControls フォームコントロールの集合
※ベースとなるFMBaseクラスを作成し、自由なレイアウトのフォームクラスを管理する。

  • UserControls ユーザコントロールの集合
※ベースとなるUCBaseクラスを作成し、自由なレイアウトのユーザコントロールクラスを管理する。

[ クラス構成 ]

FormControls
|- FMBase
|- FM01* ※FMBaseの拡張クラス
|- …

UserControls
|- UCBase
|- UC01* ※UCBaseの拡張クラス
|- …

CstmControls
|- CstmButton* ※Buttonの拡張クラス
|- CstmCheckBox* ※CheckBoxの拡張クラス
|- …

ToolApp
|- FrmUserControls* ※CstmFormの拡張クラス
|- FrmMain* ※CstmFormの拡張クラス

MainApp
|- FrmMenuCstm* ※CstmFormの拡張クラス
|- FrmMenu
|- FrmMain
|- FrmVersion
|- FrmMenuCstmEdt
|- MagicLibrary.dll

[ 技術情報 ]

[1].NETでDocking Windowを使う。

VisualStudioのようにドラッグしてウィンドウを分離したり、
ドッキングさせたりできるようにするライブラリを組み込む。

Magic Docking

以下のサイトで「Magic Docking」のライブラリを取得できる。
http://www.codeproject.com/KB/miscctrl/magicdocking.aspx
ダウンロードしたDLLを参照設定して、利用することができる。

実装方法

using Crownwood.Magic.Common;
using Crownwood.Magic.Controls;
using Crownwood.Magic.Docking;
using Crownwood.Magic.Menus;
DockingManager _dockingManager = new DockingManager(this, VisualStyle.IDE);
Content content = new Content(_dockingManager);
content = _dockingManager.Contents.Add(new FrmMenu(), "管理メニュー");
content.AutoHideSize = new Size(200, 200);
content.DisplaySize = new Size(200, 200);
content.FloatingSize = new Size(210,550);
_dockingManager.ShowContent(content);

[2] アプリケーション情報取得
Application.ProductVersion

[3] アプリケーション起動パス
Application.StartPath

[4] MDIの子フォームに割当
FrmTest frm = new FrmTest();
frm.MdiParent = this.ParentForm;
frm.Show();

[5] コントロール検索
foreach(Control ccontrol in hParent.Controls)
{
if(cControl.Name.Equals(sName))
{
return cControl;
}
}

[6] コントロールの派生クラスを作成する。

各コントロールの派生クラスを作成し、右クリック機能を実装する。
Public class CstmCheckbox : CheckBox
public class CstmCombobox : ComboBox
public class CstmRadioButon : RadioButton
public class CstmTextBox : TextBox
public class CstmLabel : Label
public class CstmButton : Button
public class Cstmform : Form
※フォームもカスタマイズする。

[7] XMLデータを抽出する。
XmlDocument document = new XmlDocument();
document.Load("test.xml");
XmlNode node = document.SelectSingleNode("Members/Member");
string sText = node.InnerText;
XmlnodeList list = document.SelectNodes("Members/Member");
string sText = list.item(index).InnerText;

~ test.xml(XMLデータ) ~
<Members>
<Member>
<Row1>山田花子</Row1>
<Row2>hanako</Row2>
<Row3>yamada</Row3>
</Member>
<Member>
<Row1>佐藤一郎</Row1>
<Row2>ichiro</Row2>
<Row3>sato</Row3>
</Member>
</Members>

[8] XMLデータを追加する。

XmlDocument document = new XmlDocument();

document.Load("test.xml");

XmlNode node = document.CreateElement("test");
node.InnerText = "test";

document.Save("test.xml");

[9] XMLデータを削除する。

XmlDocument document = new XmlDocument();

document.Load("test.xml");

XmlNode node = document.SelectSingleNode("Members/Member[@id='1']");
document.SelectSingleNode("Members").RemoveChild(node);

document.Save("test.xml");

[10] XMLデータを更新する。

XmlDocument document = new XmlDocument();

document.Load("test.xml");

XmlNode node = document.SelectSingleNode("Members/Member[@id='1']");
node.SelectSingleNode("Row1").InnerText = "test";

document.Save("test.xml");