開発者向け For developers page.
設定ファイルでXMLを多用していますが、iniファイルより楽に扱えるからです。
iniファイルはその場で直接ピンポイントでいじれる利点もありますが、.netで推奨じゃないらしいのでそこはMSの意向に合わせといたほうが無難なのかなとおもって。
設定用のクラスを作っておきます[Serializable]という属性を付けておくのがミソです。
これ単独でクラスファイルにするときはusing System.ComponentModel;を先頭にかいておいてください。
読み込み
StyleSetting styles;
ってどっかで定義されている前提です。
書き出し
pathに保存先が書かれている前提です
かいてる構文はあとで調べていただくとして、手順としては超簡単だと思います。
アンコちゃん本体の設定ファイルは、バイナリのシリアライズなのでいろいろ制約が厳しくてちょっぴり失敗した感を感じています。
追記: 2012年 12月8日にリリースした version2.0.40.4 より、本体の設定ファイルを bin 形式から XML 形式に変更しました。
iniファイルはその場で直接ピンポイントでいじれる利点もありますが、.netで推奨じゃないらしいのでそこはMSの意向に合わせといたほうが無難なのかなとおもって。
設定用のクラスを作っておきます[Serializable]という属性を付けておくのがミソです。
これ単独でクラスファイルにするときはusing System.ComponentModel;を先頭にかいておいてください。
[Serializable] public class StyleSetting { //[DisplayName("フォーム文字")] public string Color_form_fore { get; set; } //[DisplayName("フォーム背景")] public string Color_form_back { get; set; } //[DisplayName("toolメニューコンテナ背景top")] public string Color_toolmenuContTop_back { get; set; } //[DisplayName("toolメニューコンテナ背景bottom")] public string Color_toolmenuContBot_back { get; set; } //[DisplayName("toolメニューパネル")] public string Color_toolmenuContPanel_back { get; set; } //[DisplayName("toolメニュー背景")] public string Color_toolmenu_back { get; set; } //[DisplayName("toolメニュー文字")] public string Color_toolmenu_fore { get; set; } //[DisplayName("statusStrip")] public string Color_statusStrip_back { get; set; } //[DisplayName("statusStrip")] public string Color_statusStrip_fore { get; set; } //[DisplayName("メニュー背景")] public string Color_menu_back { get; set; } //[DisplayName("メニュー文字")] public string Color_menu_fore { get; set; } //[DisplayName("情報パネル背景")] public string Color_info_back { get; set; } //[DisplayName("情報パネルラベル")] public string Color_infolabel_fore { get; set; } //[DisplayName("情報パネル文字")] public string Color_info_fore { get; set; } //[DisplayName("チャットウインドウ背景")] public string Color_chat_back { get; set; } //[DisplayName("チャットウインドウ文字")] public string Color_chat_fore { get; set; } //[DisplayName("チャットウインドウテキストエリア")] public string Color_chattext_back { get; set; } //[DisplayName("FaitalMessage")] public string Color_Faital { get; set; } //[DisplayName("StatusMessage")] public string Color_Status { get; set; } //[DisplayName("Linked")] public string Color_Linked { get; set; } //[DisplayName("ActiveLink")] public string Color_ActiveLink { get; set; } //[DisplayName("放送情報")] public string Color_CastInfo { get; set; } //[NonSerialized] public bool enable; public StyleSetting() { Color_form_fore = "black"; Color_form_back = System.Drawing.SystemColors.Control.Name; Color_toolmenuContTop_back = System.Drawing.SystemColors.Control.Name; Color_toolmenuContBot_back = System.Drawing.SystemColors.Control.Name; Color_toolmenuContPanel_back = System.Drawing.SystemColors.Control.Name; Color_toolmenu_back = System.Drawing.SystemColors.Control.Name; Color_toolmenu_fore = "black"; Color_statusStrip_back = System.Drawing.SystemColors.Control.Name; Color_statusStrip_fore = "black"; Color_menu_back = System.Drawing.SystemColors.Control.Name; Color_menu_fore = "black"; Color_info_back = System.Drawing.SystemColors.Control.Name; Color_infolabel_fore = "black"; Color_info_fore = "black"; Color_chat_back = System.Drawing.SystemColors.Control.Name; Color_chat_fore = "black"; Color_chattext_back = System.Drawing.SystemColors.Window.Name; Color_Faital = "red"; Color_Status = "black"; Color_Linked = "black"; Color_ActiveLink = "red"; Color_CastInfo = "lightgreen"; } }
読み込み
StyleSetting styles;
ってどっかで定義されている前提です。
if (System.IO.File.Exists(path)) { System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Open,System.IO.FileAccess.Read); try { //XmlSerializerオブジェクトの作成 XmlSerializer serializer = new XmlSerializer(typeof(StyleSetting)); //ファイルを開く //XMLファイルから読み込み、逆シリアル化する styles = (StyleSetting)serializer.Deserialize(fs); styles.enable = true; } catch { fs.Close(); } finally { //閉じる fs.Close(); } }
書き出し
pathに保存先が書かれている前提です
System.IO.FileStream fs = new System.IO.FileStream(path, System.IO.FileMode.Create); try { XmlSerializer Serializer = new XmlSerializer(typeof(StyleSetting)); //シリアル化し、XMLファイルに保存する Serializer.Serialize(fs, styles); //閉じる fs.Close(); } catch (Exception ex) { Console.WriteLine(ex.Message); fs.Close(); }
かいてる構文はあとで調べていただくとして、手順としては超簡単だと思います。
アンコちゃん本体の設定ファイルは、バイナリのシリアライズなのでいろいろ制約が厳しくてちょっぴり失敗した感を感じています。
追記: 2012年 12月8日にリリースした version2.0.40.4 より、本体の設定ファイルを bin 形式から XML 形式に変更しました。
コメントをかく